Release Notes¶
Check below for new features added in each release. Please note that release notes were not recorded before version 0.5.0.
0.6.x¶
Features in the 0.6.x series of releases are focused on expanding functionality to include expression satisfiability and transformations.
0.6.4¶
- Introduce the
transformations.utils
module, including theRepeatableAction
,ComposedTransformation
,AbstractTransformationModifier
classes; therepeat
,twice
, andforever
factory classes; and thett_compose
utility function- Publicly expose the
ensure_bexpr
in thetransformations.utils
module- Drop support for all Python versions except 3.6, 3.7, and 3.8
0.6.3¶
- Add
non_negated_symbol_set
andnegated_symbol_set
toExpressionTreeNode
- Add
apply_idempotent_law
,apply_identity_law
, andapply_inverse_law
transformations toExpressionTreeNode
- Add
apply_idempotent_law
,apply_identity_law
, andapply_inverse_law
top-level transformation functions- Add functionality to the
coalesce_negations
transformation to apply negations on constant operands- Update
to_cnf
to incorporate new transformations, leading to more condense CNF transformed expressions
0.6.2¶
- Remove class
BooleanExpressionTree
in favor of working exclusively with instances ofExpressionTreeNode
- Add
AlreadyConstrainedSymbolError
- Add
sat_all
topicosat
interface- Add
constrain
,sat_one
, andsat_all
toBooleanExpression
- Move the implementation logic of the
to_cnf
transformation to theto_cnf
method of theExpressionTreeNode
class
0.6.1¶
- Add iff (
iff
,->
) and implies (impl
,<->
) Boolean operators- Add
is_cnf
andis_dnf
attributes toBooleanExpression
- Add functionality to initialize
BooleanExpression
objects from instances ofExpressionTreeNode
orBooleanExpressionTree
- Update __str__ and __repr__ for
BooleanExpression
- Add
is_really_unary
attribute toExpressionTreeNode
- Add
iter_clauses
,iter_cnf_clauses
, anditer_dnf_clauses
toExpressionTreeNode
- Add
iter_clauses
,iter_cnf_clauses
, anditer_dnf_clauses
toBooleanExpression
- Add
RequiresNormalFormError
- Add attributes
default_symbol_str
anddefault_plain_english_str
toBooleanOperator
, in place of removedname
attribute- Add
to_primitives
,coalesce_negations
,distribute_ands
,distribute_ors
, andapply_de_morgans
toExpressionTreeNode
- Introduce high-level
transformations
interface, including transformation functionsto_primitives
,coalesce_negations
,distribute_ands
,distribute_ors
,to_cnf
, andapply_de_morgans
- Add
BINARY_OPERATORS
andNON_PRIMITIVE_OPERATORS
sets todefinitions
module- Add
__eq__
and__ne__
implementations forBooleanExpression
and derivatives ofExpressionTreeNode
0.6.0¶
- Add
is_valid_identifier
helper method for checking if symbol names are valid- Add checking of valid symbol names to
BooleanExpression
andTruthTable
initalization logic, with corresponding new exception typeInvalidIdentifierError
- Add
boolean_variables_factory
helper for generating more intuitive collections of symbol inputs- Update
__iter__
inTruthTable
to yield inputs as anamedtuple
-like object rather than a plaintuple
- Re-organize User Guide into different sections instead of one long page
- Remove PyPy support, due to addition of C-extensions
- Add OS X builds to Travis
- Include both 32-bit and 64-bit builds on AppVeyor
- Add initial wrapper around PicoSAT library for future satisfiability interface; namely, the
sat_one
method- Add automated deployment to PyPI on tagged commits from CI services
0.5.x¶
Features in the 0.5.x series of releases were focused on expanding the top-level interface and improving optimizations under the hood. See below for specific features and fixes.
0.5.1¶
- Add
from_values
option to theTruthTable
initializer, allowing for table creation directly from values- Add ability to store don’t cares in a
TruthTable
- Add
equivalent_to
method toTruthTable
to check for equivalence of sources of truth- Convert
generate_symbols
andinput_combos
to be static methods of theTruthTable
class- Add
is_full
toTruthTable
- Add __iter__ and __getitem__ functionality to
TruthTable
- Add nice-looking __str__ to
BooleanExpression
- Add new exception types:
AlreadyFullTableError
,ConflictingArgumentsError
, andRequiredArgumentError
- Re-organize exception hierarchy so each group of exceptions extends from the same base class
- Re-organize the test file structure into more-focused files
- Add User Guide, acting as tutorial-style documentation
- Remove CLI example from the README
- Update documentation color palette
0.5.0¶
- Added the Release Notes section to the project’s documentation (how fitting for this page)
- Publically exposed the
input_combos
method in theTruthTable
class- Added test coverage for the CPython 3.6, PyPy, and PyPy3 runtimes
- Migrated all documentation to from Napoleon docstrings to standard Sphinx docstrings
- Added doctest tests to the documentation
- Added type-checking to the
BooleanExpression
class’s initialization- Fixed a bug in the handling of empty expressions in the CLI
pre-0.5¶
Unfortunately, release notes were not kept before the 0.5.0 release.