Skip to content
BETSE 0.9.1 (Luckier Levin) released.

Significant changes include:

* Cell boundary search radius increased, improving simulation stability
  in worst-case spatial layouts for user-defined cell clusters.
* MetaAppABC API added. The new object-oriented "betse.metaapp"
  submodule replaces the prior procedural "betse.pathtree" submodule,
  enabling inheritance-fueled reuse from downstream consumers (e.g.,
  BETSEE). The MetaAppABC API is intended to eventually encompass all
  general-purpose functionality required.to implement BETSE-like
  applications -- including application initialization, dependency
  resolution and initialization, and a nominal command-line interface
  (CLI).
* Git API generalized. The new
  betse.util.path.gits.get_package_worktree_dirname_or_none() function
  queries whether a given top-level Python package is in Git-based
  development mode.
* Numpy API generalized. The new
  betse.lib.numpy.nparray.get_subarray_indices() function efficiently
  yields the indices of all items of one Numpy array residing in
  another.
* Path API generalized. The new high-level
  betse.util.files.copy_overwritable() function, wrapping the existing
  lower-level betse.util.files.copy() function for the common case of
  silently overwriting arbitrary target files.
* String API generalized to support substantially enhanced truncation
  operations in the "betse.util.type.text.strs" submodule, including:
  * The new high-level truncate() function, truncating strings to
    caller-defined barriers (e.g., maximum length, terminal substring)
    and then replacing the truncated suffixes with arbitrary strings
    (e.g., ellipses).
  * The new replace_suffix_prefixed() function, prematurely truncating
    strings on impermissible substrings (e.g., newline).
  * The existing remove_suffix_with_prefix() function reduced to a
    one-liner, a substantial optimization preventing this function from
    erroneously raising exceptions in edge cases both common and
    uncommon.
  * The existing
    betse.util.type.text.regexes.die_unless_replace_substrs_line()
    function, now truncating internally raised exception messages for
    readability.
* Version API generalized. The formerly mostly empty
  "betse.util.type.numeric.versions" submodule has been substantially
  improved, despite the inability of the setuptools-bundled
  "pkg_resources" API to preserve backward compatibility across stable
  releases. Our version API now portably allows versions in any of
  several formats (i.e., string, tuple, or setuptools-specific "Version"
  or "LegacyVersion" objects) to be reliably compared. PEP 440-compliant
  versions (e.g., "5.9.0") and PEP 440-uncompliant versions (e.g.,
  "5.9.0~a1") are explicitly supported.
* Version API tested. Unit tests fully exercising all edge cases of the
  "betse.util.type.numeric.versions" submodule have been added.