• Re: ANN: EmPy 4.1 -- a powerful, robust and mature templating system f

    From Barry@3:633/280.2 to All on Mon Mar 25 21:17:26 2024
    Subject: Re: ANN: EmPy 4.1 -- a powerful,
    robust and mature templating system for Python

    You should considered also announcing on https://discuss.python.org/ which i=
    s a lot more active then this list.

    Barry


    On 25 Mar 2024, at 04:13, Erik Max Francis via Python-list <python-list@py=
    thon.org> wrote:
    =20
    =EF=BB=BFI'm pleased to announce the release of EmPy 4.1.
    =20
    The 4._x_ series is a modernization of the software and a revamp of
    the EmPy system to update its feature set and make it more consistent
    with the latest Python versions and practices. EmPy 4._x_ was also relicensed to BSD.
    =20
    The 4._x_ series adds new markups, including inline comments,
    backquote literals, chained if-then-else extended expression,
    functional expressions, support for modern Pythonic controls,
    stringized and multiline significators, named escapes, diacritics,
    icons, and emojis.
    =20
    It adds support for configuration objects (replacing options
    dictionaries); native support for Unicode, file buffering, reference
    counted `sys.stdout` proxies and error dispatchers and handlers; fixes several serious bugs; has a set of full unit and system tests, an
    extensive builtin help system; and the online documention has been
    rewritten and expanded.
    =20
    Attempts have been made to make EmPy 4._x_ as backward compatible as
    is practical. Most common markup has not changed; the only changes
    being removal of `repr` (in favor of backquote literals) as well as
    literal close parenthesis, bracket and brace markup; in-place markup
    has changed syntax (to make way for emojis); and custom markup is now
    parsed more sensibly.
    =20
    Most backward-incompatible changes are in the embedding interface.
    The `Interpreter` constructor and global `expand` function now require keyword arguments to prevent further backward compatibility problems,
    though effort has been made to make the behavior as backward
    compatible as possible. The supported environment variables have
    changed, as well as the filter, diversion and hook APIs, and options dictionaries no longer exist (in deference to configurations).
    =20
    For a comprehensive list of changes from 3._x_ to 4._x_, see: <http://www.alcyone.com/software/empy/ANNOUNCE.html#changes>
    =20
    =20
    ## Introduction: Welcome to EmPy!
    =20
    [EmPy](http://www.alcyone.com/software/empy/) is a powerful, robust and ma=
    ture
    templating system for inserting Python code in template text. EmPy
    takes a source document, processes it, and produces output. This is accomplished via expansions, which are signals to the EmPy system
    where to act and are indicated with markup. Markup is set off by a customizable prefix (by default the at sign, `@`). EmPy can expand
    arbitrary Python expressions, statements and control structures in
    this way, as well as a variety of additional special forms. The
    remaining textual data is sent to the output, allowing Python to be
    used in effect as a markup language.
    =20
    EmPy also supports hooks, which can intercept and modify the behavior
    of a running interpreter; diversions, which allow recording and
    playback; filters, which are dynamic and can be chained together; and
    a dedicated user-customizable callback markup. The system is highly configurable via command line options, configuration files, and
    environment variables. An extensive API is also available for
    embedding EmPy functionality in your own Python programs.
    =20
    EmPy also has a supplemental library for additional non-essential
    features (`emlib`), a documentation building library used to create
    this documentation (`emdoc`), and an extensive help system (`emhelp`)
    which can be queried from the command line with the main executable
    `em.py` (`-h/--help`, `-H/--topics=3DTOPICS`). The base EmPy
    interpreter can function with only the `em.py`/`em` file/module
    available.
    =20
    EmPy can be used in a variety of roles, including as a templating
    system, a text processing system (preprocessing and/or
    postprocessing), a simple macro processor, a frontend for a content management system, annotating documents, for literate programming, as
    a souped-up text encoding converter, a text beautifier (with macros
    and filters), and many other purposes.
    =20
    =20
    ### Markup overview
    =20
    Expressions are embedded in text with the `@(...)` notation;
    variations include conditional expressions with `@(...?...!...)` and
    the ability to handle thrown exceptions with `@(...$...)`. As a
    shortcut, simple variables and expressions can be abbreviated as
    `@variable`, `@object.attribute`, `@sequence[index]`, `@function(arguments...)`, `@function{markup}{...}` and
    combinations. Full-fledged statements are embedded with `@{...}`.
    Control flow in terms of conditional or repeated expansion is
    available with `@[...]`. A `@` followed by any whitespace character (including a newline) expands to nothing, allowing string
    concatenations and line continuations. Line comments are indicated
    with `@#...` including the trailing newline. `@*...*` allows inline comments. Escapes are indicated with `@\...`; diacritics with
    `@^...`; icons with `@|...`; and emoji with `@:...:`. `@%...`,
    `@%!...`, `@%%...%%` and `@%%!...%%` indicate "significators,"
    which are distinctive forms of variable assignment intended to specify per-document identification information in a format easy to parse
    externally, _e.g._, to indicate metadata. In-place expressions are
    specified with `@$...$...$`. Context name and line number changes
    can be made with `@?...` and `@!...`, respectively. `@<...>`
    markup is customizable by the user and can be used for any desired
    purpose. `` @`...` `` allows literal escaping of any EmPy markup.
    And finally, a `@@` sequence (the prefix repeated once) expands to a
    single literal at sign.
    =20
    The prefix defaults to `@` but can be changed with
    the command line option `-p/--prefix=3DCHAR` (_environment variable:_ `EMP=
    Y_PREFIX`, _configuration variable:_ `prefix`).
    =20
    =20
    ### Getting the software
    =20
    The current version of EmPy is 4.1.
    =20
    The official URL for this Web site is <http://www.alcyone.com/software/emp=
    .
    =20
    The latest version of the software is available in a tarball here: <http://www.alcyone.com/software/empy/empy-latest.tar.gz>.
    =20
    The software can be installed through PIP via this shell command:
    =20
    ```
    % python3 -m pip install empy
    ```
    =20
    =20
    For information about upgrading from 3._x_ to 4._x_, see <http://www.alcyone.com/software/empy/ANNOUNCE.html#changes>.
    =20
    =20
    ### Requirements
    =20
    EmPy works with any modern version of Python. Python version 3._x_ is expected to be the default and all source file references to the
    Python interpreter (_e.g._, the bangpath of the .py scripts) use
    `python3`. EmPy also has legacy support for versions of Python going
    back all the way to 2.3, with special emphasis on 2.7 regardless of
    its end-of-life status. It has no dependency requirements on any
    third-party modules and can run directly off of a stock Python
    interpreter.
    =20
    EmPy will run on any operating system with a full-featured Python interpreter; this includes, but is probably not limited to, Linux,
    Windows, and macOS (Darwin). Using EmPy requires knowledge of the
    [Python language](https://www.python.org/).
    =20
    EmPy is also compatible with several different Python implementations:
    =20
    | Implementation | Supported versions | Description |
    | --- | --- | --- |
    | CPython | 2.3 to 2.7; 3.0 and up | Standard implementation in C |
    | PyPy | 2.7; 3.2 and up | Implementation with just-in-time compiler |
    | IronPython | 2.7; 3.4 and up | Implementation for .NET CLR and Mono |
    | Jython | 2.7 (and up?) | Implementation for JVM |
    =20
    It's probable that EmPy is compatible with earlier versions than those
    listed here (potentially going all the way back to 2.3), but this has
    not been tested.
    =20
    Only a few .py module file(s) are needed to use EmPy; they can be
    installed system-wide through a distribution package, a third-party module/executable, or just dropped into any desired directory in the `PYTHONPATH`. A minimal installation need only install the em.py
    file, either as an importable module and an executable, or both,
    depending on the user's needs.
    =20
    EmPy also has optional support for several [third-party modules](#third-party-emoji-modules); see [Emoji
    markup](#emoji-markup) for details.
    =20
    The testing system included (the test.sh script and the tests and
    suites directories) is intended to run on Unix-like systems with a Bourne-like shell (_e.g._, sh, bash, zsh, etc.). EmPy is routinely
    tested with all supported versions of all available interpreters.
    =20
    If you find an incompatibility with your Python interpreter or
    operating system, [let me know](#reporting-bugs).
    =20
    =20
    ### License
    =20
    This software is licensed under
    [BSD (3-Clause)](https://opensource.org/licenses/bsd-3-clause/).
    =20
    =20
    ### Recent release history (since 3._x_)
    =20
    4.1 (2024 Mar 24)
    =20
    : Add support for extension markup `@((...))`, `@[[...]]`,
    `@{{...}}`, `@<...>`, etc., with custom callbacks retained for
    backward compatibility; add `@[match]` control support; add
    interpreter cores for overriding interpreter behavior; add more
    command line option toggles; add notion of verbose/brief errors;
    more uniform error message formatting; various documentation
    updates.
    =20
    4.0.1 (2023 Dec 24)
    =20
    : Add root context argument, serializers, and idents to interpreter;
    fix `setContext...` methods so they also modify the currents stack;
    better backward compatibility for `expand` function and
    `CompatibilityError`; fix inconsistent stack usage with `expand`
    method; add error dispatchers, cleaner error handling and
    `ignoreErrors`; have `expand` method/function raise
    exceptions to caller; eliminate need for `FullContext` class
    distinct from `Context`; support comments in "clean" controls; add
    `--no-none-symbol` option; add clearer errors for removed literal
    markup; add `Container` support class in `emlib`; hide non-standard
    proxy attributes and methods; support string errors (why not);
    update and expand tests; help subsystem and documentation updates.
    =20
    4.0 (2023 Nov 29)
    =20
    : A major revamp, refresh, and modernization. Major new features
    include inline comments `@*...*`; backquote literals `` @`...`
    ``; chained if-then-else expressions; functional expressions
    `@f{...}`; full support for `@[try]`, `@[while ...]` and `@[with
    ...]` control markup; `@[defined ...]` control markup; stringized
    and multiline significators; named escapes `@\^{...}`; diacritics
    `@^...`; icons `@|...`; emojis `@:...:`; configurations; full
    Unicode and file buffering support; proxy now reference counted;
    hooks can override behavior; many bug fixes; an extensive builtin
    help system (`emhelp`); and rewritten and expanded documentation in
    addition to a dedicated module (`emdoc`). Changes include
    relicensing to BSD, interpreter constructor now requires keyword
    arguments, `-d/--delete-on-error` instead of "fully buffered files";
    cleaned up environment variables; "repr" markup replaced with emoji
    markup; remove literal markups `@)`, `@]`, `@}`; context line
    markup `@!...` no longer pre-adjusts line; custom markup `@<...>`
    now parsed more sensibly; filter shortcuts removed; context now
    track column and character count; auxiliary classes moved to `emlib`
    module; use `argv` instead of `argc` for interpreter arguments. See
    [Full list of changes between EmPy 3._x_ and 4._x_](http://www.alcyone.com/software/empy/ANNOUNCE.html#all-changes) for=
    a more
    comprehensive list.
    =20
    --
    Erik Max Francis && max@alcyone.com && http://www.alcyone.com/max/
    San Jose, CA, USA && 37 18 N 121 57 W && Skype erikmaxfrancis
    Maybe this world is another planet's Hell.
    -- Aldous Huxley
    --
    https://mail.python.org/mailman/listinfo/python-list
    =20

    --- MBSE BBS v1.0.8.4 (Linux-x86_64)
    * Origin: ---:- FTN<->UseNet Gate -:--- (3:633/280.2@fidonet)