commit e3ee39350f7b7ceb206622ce998ea6a27b2a216a6c1d10c67d05fc412d1a0119 Author: Dirk Mueller Date: Tue Jan 27 17:17:01 2026 +0000 - update to 4.3.0: * Custom generator parameters description with validation. * Docs moved to Nix flake setup. * Reworked project setup. OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-textX?expand=0&rev=49 diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..9b03811 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,23 @@ +## Default LFS +*.7z filter=lfs diff=lfs merge=lfs -text +*.bsp filter=lfs diff=lfs merge=lfs -text +*.bz2 filter=lfs diff=lfs merge=lfs -text +*.gem filter=lfs diff=lfs merge=lfs -text +*.gz filter=lfs diff=lfs merge=lfs -text +*.jar filter=lfs diff=lfs merge=lfs -text +*.lz filter=lfs diff=lfs merge=lfs -text +*.lzma filter=lfs diff=lfs merge=lfs -text +*.obscpio filter=lfs diff=lfs merge=lfs -text +*.oxt filter=lfs diff=lfs merge=lfs -text +*.pdf filter=lfs diff=lfs merge=lfs -text +*.png filter=lfs diff=lfs merge=lfs -text +*.rpm filter=lfs diff=lfs merge=lfs -text +*.tbz filter=lfs diff=lfs merge=lfs -text +*.tbz2 filter=lfs diff=lfs merge=lfs -text +*.tgz filter=lfs diff=lfs merge=lfs -text +*.ttf filter=lfs diff=lfs merge=lfs -text +*.txz filter=lfs diff=lfs merge=lfs -text +*.whl filter=lfs diff=lfs merge=lfs -text +*.xz filter=lfs diff=lfs merge=lfs -text +*.zip filter=lfs diff=lfs merge=lfs -text +*.zst filter=lfs diff=lfs merge=lfs -text diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..57affb6 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.osc diff --git a/python-textX-4.2.2.tar.gz b/python-textX-4.2.2.tar.gz new file mode 100644 index 0000000..477e088 --- /dev/null +++ b/python-textX-4.2.2.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7849fd40be757115a8f4c71fb80d349d1058f97a23599dd34a618a3776c628ea +size 2136825 diff --git a/python-textX-4.2.3.tar.gz b/python-textX-4.2.3.tar.gz new file mode 100644 index 0000000..3a6cf6a --- /dev/null +++ b/python-textX-4.2.3.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b96a4c68b1505742a675970490e91945f2c5fe27ef3f0246fa9b01d28c7d7d5d +size 2137561 diff --git a/python-textX-4.3.0.tar.gz b/python-textX-4.3.0.tar.gz new file mode 100644 index 0000000..c8d3d7d --- /dev/null +++ b/python-textX-4.3.0.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:94fed80d3023bb8b3edf8fde7e60571a27f2869916a9b35586769dc8601f075f +size 2228585 diff --git a/python-textX.changes b/python-textX.changes new file mode 100644 index 0000000..349372d --- /dev/null +++ b/python-textX.changes @@ -0,0 +1,451 @@ +------------------------------------------------------------------- +Tue Jan 27 17:15:51 UTC 2026 - Dirk Müller + +- update to 4.3.0: + * Custom generator parameters description with validation. + * Docs moved to Nix flake setup. + * Reworked project setup. + +------------------------------------------------------------------- +Wed Oct 29 13:29:37 UTC 2025 - John Paul Adrian Glaubitz + +- Update to 4.2.3 + * fix: wrong reference/capture in `call_obj_processors` closure + leading to memory leak due to keeping reference to the Model object. +- Use Python 3.11 on SLE-15 by default + +------------------------------------------------------------------- +Tue May 13 06:47:45 UTC 2025 - Sebastian Wagner + +- limit check to tests/functional as upstream does +- update to version 4.2.2: + - Fixed: + - tests for subcommands. Click 8.2.0 now returns exit code 2 when command is not + correct. See [433]. +- update to version 4.2.1: + - Fixed: + - regression where textx generate/check command didn't report location info. + - removed encoding of unicode strings in textx exceptions. +- update to version 4.2.0: + - Changed: + - Moved from click.echo to logging. + +------------------------------------------------------------------- +Tue Oct 29 20:58:24 UTC 2024 - Dirk Müller + +- update to 4.1.0: + * `nchar` attribute to `TextXError` class, which represents the + substring length for the model object where the error was found. + * `linetype` parameter to PlantUML generator which controls + line style. See the tip in the visualization docs + * Rendering of multiplicities of association in PlantUML + generator. + * Meta-model diagram export now raises attributes/references to + abstract + * meta-classes along the inheritance chain. See [423]. + * The Python version limit "<3.13" has been removed from the + pyproject.toml file. The library should run on all Python + versions starting from 3.8 + +------------------------------------------------------------------- +Fri Apr 5 06:06:27 UTC 2024 - Steve Kowalik + +- Update to 4.0.1: + * Use flit-core for test projects. + * Removed word boundary from INT rule regex. + * Removed Python support for 3.6 and 3.7. The minimal supported version + is 3.8. + * Migrated to pyproject.toml for project configuration. + * Migrated to importlib for language/generator registration/discovery as + setuptools pkg_resources is deprecated and unsupported from Python 3.12. + * Added dependency to `importlib-metadata` backward compatibility + package for Python versions < 3.10. + * Relaxed dependency for click to accept 8.x. + * Use flit for package building and publishing. +- Use build and installer for the test projects so we do not pollute the + build root. + +------------------------------------------------------------------- +Mon Feb 5 13:29:19 UTC 2024 - Sebastian Wagner + +- Require Arpeggio >= 2.0.0 fixing build fails + +------------------------------------------------------------------- +Mon Sep 11 05:42:48 UTC 2023 - Steve Kowalik + +- Update to 3.1.1: + * Source distribution packaging issue ([392]). Thanks yurivict@GitHub. + * Fixed RREL lookup in case of multi-meta models (some special cases were not + handled correctly; [#379]). + * Fixed test suite invocation to use `pytest` over `py.test` that stopped + working in pytest-7.2.0. ([#389]). Thanks mgorny@GitHub. + * Changed separator in obj. rule refs from `|` to `:`. Old separator + will still be allowed until version 4.0. ([#385], [#384]) + * Removed the dependency on `future` package ([#388]). Thanks mgorny@GitHub. + * Removed vendored `six` library. We don't need 2.x support anymore. Thanks + davidchall@GitHub for reporting the issue ([#390]). +- Switch to pyproject macros. +- Stop using greedy globs in %files. +- Drop a Python 2 requires. + +------------------------------------------------------------------- +Tue Mar 22 20:51:24 UTC 2022 - Sebastian Wagner + +- update to version 3.0.0: + - Added: + - Added RREL-'fixed name'-extension, allowing to follow model elements + given a fixed name (e.g. an object defined in a builtin model). + Details described in rrel.md ([#364]). + - Added ability to access the full path of named objects traversed while + resolving a RREL expression ([#304]). + - Added decorator `textx.textxerror_wrap` for object processors to automatically + transform non-TextXErrors to TextXErrors in order to indicate the filename and + position of the element being processed ([#306]). + - Fixed: + - `model_param_defs` on `TextXMetaMetaModel` ([#360]). + - Interpreting of backslash special chars (e.g. `\n`, `\t`) in grammar string + matches ([#323]). Possible **(BIC)** - backslash chars were not interpreted in + grammar files and raw Python strings prior to this fix. + - Exception/error messages ([#320]) + - Relaxed assert in model creation enabling some model changes in user classes + ([#311]) + - Model export to dot in cases where textX object is replaced in the + processor([#301]) + - Do not allow "empty" RREL expressions (compare unittests in `test_rrel.py`; [#355]) + - Changed: + - Inheritance chain calculation. Possible **(BIC)** ([#369]). + - Added `def_file_name` attribute to `RefRulePosition` for storing the definition's + model file name in case of cross-references between models. ([#313],[#277]) + - Migrated from Travis CI to GitHub Actions ([#307]) + - Dropped support for deprecated Python versions. The lowest supported version + is 3.6. **(BIC)** + +------------------------------------------------------------------- +Sun Jul 4 09:56:22 UTC 2021 - Sebastian Wagner + +- Fix package builds for Leap 15.2 and 15.3, requires python-xml + +------------------------------------------------------------------- +Sun Nov 1 17:56:21 UTC 2020 - Sebastian Wagner + +- remove fix_tests_setupcfg.patch, included upstream +- update to version 2.3.0: + - Added: + - `textx generate`. Documented passing in arbitrary parameters which can be + used in the generator function. Also, implemented passing of model + parameters defined in the meta-model (`model_param_defs` and + `_tx_model_params`) ([#299]) + - `get_location` function for producing `line/col/filename` from any textX + object. ([#294]) + - `builtin_models` of type `ModelRepository` to meta-model constructor. Used + to supply pre-loaded models for `ImportURI` based scoping providers as a + fallback to search into. ([#284]) + - Initial implementation of TEP-001 ([#111]) allowing to specify scope + provider behavior within the grammar itself. [#274] and [#287] introduce + the RREL (reference resolving expression language) to define how + references are resolved. Details see `rrel.md`. + - Parameter `should_follow` of callable type to `get_children` and + `get_children_of_type` model API calls to decide if the element should be + traversed. ([#281]) + - Fixed: + - Fixed bug with Falsy user classes in `get_children` ([#288]) + - Fixed bug with unhashable objects during dot export ([#283]) + - Fixed bug where (Ext)RelativeName scope providers accepted any referenced + object that contained the lookup name in its name. Thanks ipa-mdl@GitHub + ([#267]) + - Fixed bug in `flow_dsl` test project causing static files not being included + in package build/installation. Thanks sebix@GitHub ([#272]). + - Fixed bug, where user classes not used in the grammar caused exceptions + ([#270]): now, when passing a list of user classes, you need to use them in + your grammar. You can alternatively also pass a callable (see metamodel.md; + [#273]). Also, using base classes for rules from imported grammars in + conjunction with user classes is not allowed and results in an exception. + - Fixed bug in `export.py` concerning html escaping in the dot export of a + textx meta-model ([#276]). + - Changed: + - `_tx_model_param_definitions` deprecated in favor of `model_param_defs` ([#298]). + - `click` is now an optional dependency, only when CLI is needed ([#292]) + - Make warning about not overwriting generated file more visible + ([01341ec3](https://github.com/textX/textX/commit/01341ec381bfb4c8c27bcec5d2998a34d207f430)) + - Truncate long strings during dot export for better diagram readability ([#282]). + - Changed `unhashable type` exception when a list is used for `name` attributes by + raising a more informative exception and extending docs to document the issue + and a proper way to solve it ([#40], [#266]). + +------------------------------------------------------------------- +Thu Aug 6 13:16:43 UTC 2020 - Sebastian Wagner + +- update to version 2.2.0: + - Added: + - Initial docs for Jinja code generator support (from + [textX-jinja](https://github.com/textX/textX-jinja)) ([#264]). + - Analyzing grammars programmatically as plain textX models + (`grammar_model_from_str/file`) ([#235]) + - Initial `startproject` scaffolding (from + [textX-dev](https://github.com/textX/textX-dev)) docs ([#234]) + - Generator helper functions `get_output_filename` and `gen_file` ([#233]) + - `textx version` command ([#219]) + - Versions for languages/packages in `list-languages` and `list-generators` + commands ([#228]) + - Added the ability to specify extra parameters during `model_from_file` or + `model_from_str` and to define which extra parameters exist in the + meta-model ([#243]). + - Fixed: + - Fixed several instances of invalid truthiness checking. Thanks + markusschmaus@GitHub ([#250]) + - Fixed applying multiple grammar rule modifiers ([#246]) + - Fixed exception on calling `check` CLI command with relative path name. + - Fixed return value of textx generate and check commands: we return a failure + on error now ([#222]) + - Fixed type checking for references to builtin elements ([#218]) + - Changed: + - User classes can now be immutable (e.g. `attr.frozen`) or can use + `__slots__`. Thanks markusschmaus@GitHub ([#256, #260, #261]) + - Cleanup of setup configuration and install scripts [#231] + - Dot/PlantUML rendering of meta-models: remove rendering of base types, + improve rendering of required/optional, render match rules as a single + table. ([#225]) + - Allow passing kwargs in `metamodel_for_file/language` registration API + calls. ([#224]) +- Add patch to fix tests: + * fix_tests_setupcfg.patch + +------------------------------------------------------------------- +Mon May 18 09:10:29 UTC 2020 - Petr Gajdos + +- %python3_only -> %python_alternative + +------------------------------------------------------------------- +Wed Mar 11 11:27:12 UTC 2020 - pgajdos@suse.com + +- version update to 2.1.0 + ### Added + - Added new function `textx.scoping.is_file_included` ([#197]). + ### Changed + - Allow passing kwargs (specially - file_name) argument when loading metamodel + from string (needed for `textX-LS v0.1.0`) ([#211]). + - Changed the parser rule for regex matches. Spaces are not stripped any more + from the beginning and the end of the regexp-pattern. This could be possible + **BIC** for some special cases [#208]. + - Changed function name `textx.scoping.get_all_models_including_attached_models` + to `textx.scoping.get_included_models` (marked old function + as deprecated) ([#197]). + - Delete all models touched while loading a model, when an error occurs + while loading in all repositories (strong exception safety guarantee) ([#200]). + +------------------------------------------------------------------- +Tue Jul 9 11:53:21 UTC 2019 - Sebastian Wagner + +- Fix Tests for Leap 15.1: click requires UTF-8 locale. + +------------------------------------------------------------------- +Sat Jun 8 14:09:51 UTC 2019 - Sebastian Wagner + +- Use documentation page as homepage instead of repository. + +------------------------------------------------------------------- +Thu Jun 6 18:56:06 UTC 2019 - Sebastian Wagner + +- Fix the tests + +------------------------------------------------------------------- +Tue Jun 4 14:23:23 UTC 2019 - Tomáš Chvátal + +- Make sure the package actually again gets to the test phase + * the tests are actually failing now + +------------------------------------------------------------------- +Sun Jun 2 15:22:59 UTC 2019 - Sebastian Wagner + +- update to version 2.0.1: + - Added: + - [Registration and discovery] of languages and generators ([#187]) + - New textx CLI commands for listing generators and languages + (`list-generators`, `list-languages`) and calling a generator (`generate`) ([#187]) + - Meta-models may now [reference other registered meta-models] using the + `reference` statement ([#187]) + - Adding examples and documentation related to scope providers (related to + model modification through scope providers) ([#168]) + - metamodel export feature for [PlantUML] ([#165]) + - `textx_isinstance` from `textx.scoping.tools` made available in `textx` + ([#164], [#157]) + - CLI extensibility ([#162], [#161]) + - An initial version of FAQ page ([#138]). Thanks Aluriak@GitHub + - A version of `calc.py` exercises usage of + `text.scoping.tools.textx_isinstance()` to inspect model objects types + during traversal. ([#136], [#123]). Thanks dkrikun@GitHub + - A version of `calc.py` in expression example that exercises dynamically adding + properties to object classes ([#126]). Thanks dkrikun@GitHub + - python like imports (named import rules, scope providers affected) ([#114]) + - Added `STRICTFLOAT` as buildin type to allow to distinguish ints from floats + in `NUMBER`. Fixed docu link ([#98]). Possible **(BIC)** + - Added [flake8] and [coverage] checking ([#92]) + - Changed: + - All textX commands implemented using textX CLI extensibility. `check` + command reworked to support the new registration feature ([#187]) **(BIC)** + - (Meta-)model visualization reworked as a set of textX generators ([#187]). + **(BIC)** + - Made scope provider implementation of `RelativeName` and `ExtRelativeName` + more readable ([#186]). Minor functional changes, not very probable to have + any impact (only affects model-paths containing a list not at the end of the + path; see [#186]). Possible **(BIC)**. + - Improved handling of abstract rules references. Improved the definition of + rules for various cases. Docs + tests ([#185], [#166]) **(BIC)** + - Changed the time of call of match rule object processors to be during the + model construction. This enable proper override of base types processors and + calls on nested match rules ([#183], [#182], [#96]). Possible **(BIC)** + - CLI migrated to the [click] library ([#162]) + - Docs improvements ([#146], [#153], [#151]). Thanks simkimsia@GitHub. + - `FQN` constuctor param `follow_loaded_models` removed and introduced + callback `scope_rediction_logic` to implement arbitrary logic on FQN + resolution ([#133], [#114], [#103]) **(BIC)** + - Changed attribute name for the meta-model object (from `metamodel._parser` + to `metamodel._parser_blueprint`). ([#93]) **(BIC)** + - Started using _[Keep a Changelog][keepachangelog]_ ([#174]) + - Started using _[Semantic Versioning][semver]_ ([#174]) + - Dropped support for Python 3.3 + - Fixed: + - White-spaces in string matches were erroneously stripped ([#188]) + - Calling of match rule object processors ([#183], [#182], [#96]) + - Circular rule references in grammars ([#173], [#159], [#155]) + - Assertion error while calling object processors with multi meta models + (extended grammars) and custom types ([#141], [#140]) + - Using a sequence of matches and rule reference in an abstract rule choice + alternative, and explicitly disallowing referencing more than one rule in an + abstract rule choice alternative ([#134]) + - Unicode requirement for (meta)-model strings API parameters made strict. + This should prevent common errors with Python 2.x. ([#120]) (related: [#99], + [#105], [#117]). Possible **(BIC)** + - OS incompatibility fixes (path separator). ([#114]) + - Object processors called twice for imported models ([#108], [#118]) + - Documentation and examples regarding `NUMBER` base type ([#97], [#100]). + Thanks approxit@GitHub + +------------------------------------------------------------------- +Fri Apr 5 08:46:58 UTC 2019 - pgajdos@suse.com + +- version update to 1.8.0 + - https://github.com/igordejanovic/textX/pull/71 + - Regular expression with group support + - See [the + docs](http://www.igordejanovic.net/textX/development/grammar/#matches) + for usage. + - https://github.com/igordejanovic/textX/pull/69 + - Added search path feature (issue #66) - search path support for model + files (importURI scope providers; see docs/scoping.md). + - https://github.com/igordejanovic/textX/pull/77 + - New multi meta model support for references-only for better meta model + modularity (referencing models without having access to the grammar, + see docs/multimetamodel.md). + - https://github.com/igordejanovic/textX/pull/79 + - Fixing obj_processors calling. + - https://github.com/igordejanovic/textX/pull/84 + - New contribution guide. + - https://github.com/igordejanovic/textX/pull/81 + - Bugfix: lost encoding for multi meta-model. + - https://github.com/igordejanovic/textX/pull/68 + - changed parser access in metamodel (private attribute "_parser") + - mkdocs documentation now uses [mike](https://github.com/jimporter/mike) for + multiversion support. + +------------------------------------------------------------------- +Tue Dec 4 12:55:15 UTC 2018 - Matej Cepl + +- Remove superfluous devel dependency for noarch package + +------------------------------------------------------------------- +Thu Nov 22 14:31:16 UTC 2018 - Bernhard Wiedemann + +- drop indeterministic .dot files to make package build reproducible + (boo#1114571) + +------------------------------------------------------------------- +Fri Jul 6 20:48:57 UTC 2018 - sebix+novell.com@sebix.at + +- update to version 1.7.0: + - A major feature of this release is multi-(meta-)model support with + configurable resolving techniques. Thanks Pierre Bayerl (goto40@GitHub)! + + The docs sections are [here](http://www.igordejanovic.net/textX/scoping/) + and [here](http://www.igordejanovic.net/textX/multimetamodel/). + + Details follow: + - added new function textx.get_model.children to search arbritrary children + using a lambda predicate. + - remapped textx.model.get_children_of_type to the new children function + (changed the logic, such that the root node is also checked to be model + object). + - added new metamodel function to register scope providers. Scope providers + are callables, which return the referenced object. + - added optional attribute "_tx_model_repository", see metamodel.py + documentation + - added attribute "scope_provider" like "obj_processors" to organize scope + providers + - added an optional argument to model_from_str and model_from_file: + "pre_ref_resolution_callback": this is required internally to prepare the + loading of other model files. + - changed reference resolution in model.py + - moved default resolution to textx.scoping.py + - select the scope provider based on rule and rule-attribute (see + scoping.py documentation) + - added a Postponed type to postpone the resolution + - introduced a multi-pass resolution (implemented at the end of + parse_tree_to_objgraph; introduced new helper argument, e.g., a new + optional argument "is_this_the_main_model" and + "pre_ref_resolution_callback" (see metamodel.py above) to support + reference resolution in the presence of different model files. + - added a new module textx.scoping, to provide some scope providers (e.g. a + fully qualified name provider) - see scoping.py: + - full qualified names for reference names (e.g. package.package.class) + - global scope (model distributed over different files - loaded globally) + - import scope (model distributed over different files - loaded when + imported) + - relative scopes (e.g. instance.method where method is defined for the + class of the instance in a model of classes, methods and instances) + - selecting the metamodel based on a file pattern when loading models + - added tests (mostly scope related - some of them also test other stuff, + like buildins) + - exceptions where adapted to include a file name (makes errors more + visible) + - The metamodel now allows to specify a global model repository. With this + you can now share models across metamodels (before you could only do this + within one metamodel or language). + - The metamodel clones the parser when parsing a model file. The meta model + holds one parser, which is clone for every model to be parsed. + - TextXModelParser now has a clone method. + (TBC: is the clone ok: see responsibility of the method) + - model.py: the resolution loop logic now mostly moved to a separate object + ReferenceResolver, which holds the parser. + - The reference resolver are build from all model files affected (loaded). + This may involve multiple meta models. + - Then all references are resolved in one loop. + - Finally the helper objects (ReferenceResolver) are purged. + - The MetaModelProvider has a clear-method now (useful for tests). + - Backward incompatible change: match filters and object processors unified. + Now there are only object processors but they are called for any type of + rule and the returned value if exists is used instead of the original + object. See [the + docs](http://www.igordejanovic.net/textX/metamodel/#object-processors). In + order to migrate your match filters just register them as object processors. + - Fixing FLOAT regex. Thanks Boris Marin (borismarin@GitHub)! + - Fixing position info on obj cross ref. Thanks Daniel Elero (danixeee@GitHub)! + +------------------------------------------------------------------- +Sun Feb 18 18:52:02 UTC 2018 - jengelh@inai.de + +- Compact description + +------------------------------------------------------------------- +Wed Jan 31 13:41:03 UTC 2018 - sebix+novell.com@sebix.at + +- update to version 1.6.1. No notable changes. +- update to version 1.6.0. Shortened changelog: + * Introduced _tx_fqn class attribute. + * textX api functions and classes are now available directly from textx module. + * bugfixes +- update to version 1.5.2. Bugfixes. + +------------------------------------------------------------------- +Mon Aug 28 12:37:08 UTC 2017 - sebix+novell.com@sebix.at + +- initial package diff --git a/python-textX.spec b/python-textX.spec new file mode 100644 index 0000000..5d6cfd9 --- /dev/null +++ b/python-textX.spec @@ -0,0 +1,106 @@ +# +# spec file for package python-textX +# +# Copyright (c) 2026 SUSE LLC and contributors +# +# All modifications and additions to the file contributed by third parties +# remain the property of their copyright owners, unless otherwise agreed +# upon. The license for this file, and modifications and additions to the +# file, is the same license as for the pristine package itself (unless the +# license for the pristine package is not an Open Source License, in which +# case the license is the MIT License). An "Open Source License" is a +# license that conforms to the Open Source Definition (Version 1.9) +# published by the Open Source Initiative. + +# Please submit bugfixes or comments via https://bugs.opensuse.org/ +# + + +%{?sle15_python_module_pythons} +Name: python-textX +Version: 4.3.0 +Release: 0 +Summary: Meta-language for DSL implementation inspired by Xtext +License: MIT +URL: https://textx.github.io/textX/stable/ +Source: https://github.com/igordejanovic/textX/archive/%{version}.tar.gz#/%{name}-%{version}.tar.gz +BuildRequires: %{python_module base >= 3.8} +BuildRequires: %{python_module flit-core} +BuildRequires: %{python_module pip} +BuildRequires: %{python_module wheel} +BuildRequires: fdupes +BuildRequires: python-rpm-macros +Requires: python-Arpeggio >= 2.0.0 +Recommends: python-click >= 7.0 +Requires(post): update-alternatives +Requires(postun): update-alternatives +Obsoletes: %{name}-doc +BuildArch: noarch +# SECTION tests +BuildRequires: %{python_module Arpeggio >= 2.0.0} +BuildRequires: %{python_module Jinja2} +BuildRequires: %{python_module build} +BuildRequires: %{python_module click >= 7.0} +BuildRequires: %{python_module html5lib} +BuildRequires: %{python_module installer} +BuildRequires: %{python_module memory_profiler} +BuildRequires: %{python_module pytest} +# /SECTION +%python_subpackages + +%description +textX is a meta-language for building Domain-Specific Languages (DSLs) in Python. +It is inspired by Xtext. + +From a single language description (grammar), textX will build a +parser and a meta-model (a.k.a. abstract syntax) for textual +languages. Own languages can be invented or support for already +existing textual language or file format be built. + +textX follows the syntax and semantics of Xtext, but differs in some places +and is implemented in Python using the Arpeggio PEG parser - no grammar +ambiguities, unlimited lookahead, interpreter style of work. + +%prep +%setup -q -n textX-%{version} +sed -i '0,/#!\/usr\/bin\/env/ d' examples/hello_world/hello.py + +%build +%pyproject_wheel +for dir in tests/functional/subcommands/example_project \ +tests/functional/registration/projects/types_dsl \ +tests/functional/registration/projects/data_dsl \ +tests/functional/registration/projects/flow_dsl \ +tests/functional/registration/projects/flow_codegen ; do + pushd $dir + python3 -m build -wn + popd +done + +%install +%pyproject_install +mkdir tmp-modules +find tests/functional -name '*.whl' -exec python3 -m installer -d tmp-modules {} \; +%python_expand install -m 0644 textx/textx.tx %{buildroot}%{$python_sitelib}/textx/ +%python_clone -a %{buildroot}%{_bindir}/textx +%python_expand %fdupes %{buildroot}%{$python_sitelib} + +%check +export LC_ALL=C.UTF-8 +export PYTHONPATH=$(ls -1d tmp-modules/usr/lib/python3.*/site-packages) +%pytest tests/functional + +%post +%python_install_alternative textx + +%postun +%python_uninstall_alternative textx + +%files %{python_files} +%license LICENSE.txt +%doc AUTHORS.md CHANGELOG.md README.md +%python_alternative %{_bindir}/textx +%{python_sitelib}/textx +%{python_sitelib}/textx-%{version}.dist-info + +%changelog