Skip to content
BETSEE 0.9.1.0 (Luckier Levin) released.

Significant changes include:

* The "--cache-policy" command-line option, allowing developers, end
  users, and automated tests to enable alternative XML->Python caching
  strategies. Internally, BETSEE converts XML-formatted Qt
  (Creater|Designer) user interface (UI) files residing under the
  "betsee.data" subpackage into PySide2-based Python submodules residing
  under one of two subpackages:
  * "betsee.data.py", the application-wide cache containing the official
    versions of these submodules bundled with BETSEE itself.
  * "~/.betsee/py", the user-specific cache containing strictly
    unofficial versions of these submodules *NOT* bundled with BETSEE
    itself.
  In both cases, BETSEE itself dynamically regenerates these submodules
  at runtime as needed. The mandatory argument passed to this optional
  option dictates which of these submodules if any are actually
  regenerated:
  * "--cache-policy=dev", the developer-specific caching policy. Under
    this strategy, both the application-wide *AND* user-specific caches
    are regenerated as needed. Raised exceptions are treated as fatal
    errors.
  * "--cache-policy=dev", the end user-specific caching policy. Under
    this strategy, *ONLY* the user-specific cache is regenerated. If any
    exception is raised while doing so, that exception is logged as a
    non-fatal warning and the corresponding submodule from the
    application-wide cache is copied into the user-specific cache --
    ensuring that the latter always exists.
  * "--cache-policy=auto", the default caching policy. This strategy
    detects whether or not BETSEE is currently installed in development
    mode (i.e., tracked by a Git working tree), in which case the
    developer-specific caching policy is deferred to; else, the end
    user-specific caching policy is deferred to.
* Issue #1 (i.e., "Startup Error") resolved. For both portability and
  efficiency reasons, BETSEE only officially supports the
  (Ana|Mini)conda Python distribution. This support is provided by the
  conda-forge "betsee-feedstock," which necessarily depends on the
  conda-forge "pyside2-feedstock," whose most recent release installs
  only the Qt 5.6.0 pre-pre-release version of PySide2, which predates
  the official Qt 5.11.2 "technical preview" pre-release version of
  PySide2 produced in late Septemeber of this year by the Qt Company.
  Unsurprisingly, the pre-pre-release version of PySide2 distributed by
  (Ana|Mini)conda suffers various game-breaking deficiencies, including
  the failure of the "pyside2uic" package to convert Qt
  (Creater|Designer) user interface (UI) XML files into working
  PySide2-based Python logic. This core defect is circumvented by the
  new by the new "--cache-policy" option, which contextually ignores
  failures during cache regeneration when run as an end user.
* Issue #2 (i.e., "New Simulation Error") resolved. This release
  circumvents a trivial backward incompatibility with the Qt 5.6 API:
  notably, the failure of Qt < 5.7.0 to pass the "checked" boolean to
  slots connected to the prevalent "QAction.triggered" signal.
* Caching API centralized. Caching-specific logic previously distributed
  throughout the codebase (e.g., the "betsee.gui.guicache" submodule,
  the "betsee.util.io.xml" subpackage) has now been centralized into the
  new "betse.lib.pyside2.cache" subpackage for maintainability.
* Pathtree -> MetaAppABC API. The prior procedural-based
  "betsee.guipathtree" submodule has been refactored into the
  object-oriented "betsee.guimetaapp" submodule leveraging the newly
  minted "betse.util.meta.metaappabc" API, reducing DRY (i.e., "Don't
  Repeat Yourself") violations across both codebases.
* Test suite planning. This release also adds the rudimentary outline
  for what will subsequently be developed into a full-blown continuous
  integration (CI) test suite. While currently non-working, something
  >>>>>>>> nothing.

Thanks to Eric Sinton (@esinton) for voluminously documenting both
issues and supplying an ad-hoc solution for the first issue. Our
userbase rocks!