Skip to content

dyce release notes

0.5.2

  • Updates binder links that fix requirements ranges.

0.5.1

0.5.0

  • Breaks dyce.viz out into anydyce.
  • Removes use of numerary.types.SCU types.
  • Adds the H.foreach and P.foreach class methods.
  • Migrates resolve_dependent_probability to the H.foreach class method.

0.4.5

0.4.4

  • Removes …_gh.png hack now that this dumpster fire is at least partially resolved.
  • Refines Tension Pool example.
  • Adds Ironsworn example.
  • Removes faulty (correctly-derived, but misapplied) math in Risus “Evens Up” example.
  • Adds detail around dependent probabilities.
  • Adds experimental dyce.h.resolve_dependent_probability function.

0.4.3

0.4.2

  • Removes calls to os.get_terminal_size to retain utility in environments without terminals. Fixes #5. Thanks @sudo-simon!!

0.4.1

  • Splits out protocol checking into its own fancy library: numerary!
  • Is now available on PyPI as dyce_, thanks to the generosity of David Eyk!
  • Introduces experimental generic walk function and supporting visitor data structures.
  • Uses pygraphviz to automate class diagram generation. (See the note on special considerations for regenerating class diagrams in the hacking quick start.)
  • Introduces experimental use of numpy for RNG, if present.
  • Migrates to using pyproject.toml and setup.cfg.
  • Adds missing py.typed to ensure clients get type checking. (Whoops.)

0.4.0

Breaking changes

Warning

The following changes are not backward compatible. Please review before upgrading.

  • Renames HAbleT and HAbleOpsMixin to HableT and HableOpsMixin. Uses alternate spellings.
  • Removes deprecated non-flattening unary operation methods P.__neg__ and P.__pos__. Uses, e.g., P.umap(operator.__neg__) or P(-h for h in p) instead.
  • Removes deprecated synonym methods H.even and H.odd. Uses H.is_even and H.is_odd instead.
  • Removes deprecated synonym package dyce.plt. Uses dyce.viz instead.
  • Removes special case handling of H({}) for addition and subtraction. Check for code that relied on, e.g., h + H({}) resolving to h. It is probably not correct. If the behavior is desired, consider eliminating empty histograms before performing calculations. E.G., h1 + h2 if h2 else h1.

    See also the sum_h function, which ensures the result is always a histogram:

    1
    2
    3
    4
    5
    >>> from dyce.h import sum_h
    >>> sum(())
    0
    >>> sum_h(())
    H({})
    

    Note, however, that sums including empty histograms will be always result in empty histograms:

    1
    2
    3
    4
    >>> from dyce import H
    >>> hs = (H(6), H(6), H(6), H({}))
    >>> sum_h(hs)
    H({})
    

    If a different result was desired, adapting our advice from above would yield something like:

    1
    2
    >>> sum_h(h for h in hs if h)
    H({3: 1, 4: 3, 5: 6, 6: 10, ..., 16: 6, 17: 3, 18: 1})
    

Other changes

  • Documentation overhaul including augmented examples and reorganized images and JavaScript.
  • Fixes H({}).format() bug.
  • Adds beartype runtime type checking.
  • Maintains support for Python 3.7 (for now).

0.3.2

0.3.1

  • Adds these release notes.
  • Boosts isinstance performance with dyce’s proprietary numeric Protocols.
  • Reinstates support for Python 3.7 (for now).
  • Adds H.is_even and H.is_odd.
  • Deprecates synonym methods H.even and H.odd.
  • Introduces experimental H.total property.
  • Removes incorrectly non-flattening unary operation methods P.__abs__ and P.__invert__.
  • Deprecates non-flattening unary operation methods P.__neg__ and P.__pos__.
  • Renames experimental P.homogeneous property to P.is_homogeneous.
  • Introduces experimental R and Roll primitives.
  • Removes coerce parameter from H.map, H.rmap, and H.umap.
  • Renames dyce.plt to dyce.viz.
  • Deprecates synonym package dyce.plt.

0.3.0

dyce goes beta! Non-experimental features should be considered stable.