Blob Blame History Raw
Name:           python-lark
Version:        1.1.9
Release:        %autorelease
Summary:        Lark is a modern general-purpose parsing library for Python
# License breakdown:
# lark/tools/standalone.py - MPL-2.0
# lark/__pyinstaller/hook-lark.py - GPL-2.0-or-later
# the rest is MIT
License:        MIT AND MPL-2.0 AND GPL-2.0-or-later
Url:            https://github.com/lark-parser/lark
Source:         %{pypi_source lark}

BuildArch:      noarch

%description
Lark is a modern general-purpose parsing library for Python.

Lark focuses on simplicity and power. It lets you choose between
two parsing algorithms:

Earley : Parses all context-free grammars (even ambiguous ones)!
It is the default.

LALR(1): Only LR grammars. Outperforms PLY and most if not all
other pure-python parsing libraries.

Both algorithms are written in Python and can be used interchangeably
with the same grammar (aside for algorithmic restrictions).
See "Comparison to other parsers" for more details.

Lark can auto magically build an AST from your grammar, without any
more code on your part.

Features:

- EBNF grammar with a little extra
- Earley & LALR(1)
- Builds an AST auto magically based on the grammar
- Automatic line & column tracking
- Automatic token collision resolution (unless both tokens are regexps)
- Python 2 & 3 compatible
- Unicode fully supported

%package -n python3-lark
Summary:        %{summary}
BuildRequires:  python3-devel
%py_provides    python3-lark-parser
Obsoletes:      python3-lark-parser < 1

%description -n python3-lark
Lark is a modern general-purpose parsing library for Python. With Lark, you can
parse any context-free grammar, efficiently, with very little code.

Main Features:
    - Builds a parse-tree (AST) automagically, based on 
      the structure of the grammar
    - Earley parser
    - Can parse all context-free grammars
    - Full support for ambiguous grammars
    - LALR(1) parser
    - Fast and light, competitive with PLY
    - Can generate a stand-alone parser
    - CYK parser, for highly ambiguous grammars
    - EBNF grammar
    - Unicode fully supported
    - Automatic line & column tracking
    - Standard library of terminals (strings, numbers, names, etc.)
    - Import grammars from Nearley.js
    - Extensive test suite
    - And much more! Since version 1.0, only Python versions 3.6 and up
      are supported.

%prep
%autosetup -p1 -n lark-%{version}

# Fix wrong-file-end-of-line-encoding.
sed -i 's/\r$//' README.md examples/*.py

%generate_buildrequires
%pyproject_buildrequires

%build
%pyproject_wheel

%install
%pyproject_install
%pyproject_save_files lark

%check
%{python3} -m tests

%files -n python3-lark -f %{pyproject_files}
%doc README.md examples

%changelog
%autochangelog