Changelog

v0.11.0 - Unreleased

Fixes

  • Ensure that we are future compatible with Python 3.9 by adhereing to PEP 563 (#252)

Removed

  • Removed Python 3.6 support. (#252)

v0.10.0 - 2020-07-10

Standard Library

  • Add new definition arlunio.shape.Triangle, also add new arlunio.math.Barycentric definition which serves as the Triangle’s base. (#187)

  • Add arlunio.image.load and arlunio.image.decode functions to mirror the existing save and encode functions.

    Update arlunio.image.Image to now be a class in its own right, wrapping a Pillow image object to add additional functionality

    Make the arlunio.image.fill and arlunio.image.colorramp functions return RGBA images to make image composition easier. (#247)

  • Moved arlunio.pattern.Grid, arlunio.pattern.Map and arlunio.pattern.Pixelize into arlunio.mask. Also Grid has been renamed to Repeat. (#249)

v0.0.7 - 2020-06-18

Fixes

  • Add missing return type annotation to MaskXXX operators, this should allow combining multiple definition instances together. (#223)

Docs

  • Updated the arlunio-image directive to output a warning during a Sphinx build if a given image fails to render. (#227)

  • Refactor arlunio-image directive to be based on the standard figure directive. This means that the standard figure options now also work with arlunio-image. (#237)

Standard Library

  • Moved the “expression” based code out of core into the arlunio.math module.

    New arlunio.image module. This contains the image code that was originally part of “core” arlunio. (#228)

  • New arlunio.raytrace module based on the Ray Tracing in One Weekend book. Currently only supports diffuse materials and spheres, will probably need a few revisions before it becomes useful. (#230)

  • Refine the concept of a Mask

    A Mask is now a sub-class of a numpy.ndarray that is geared towards manipulating boolean numpy arrays. They can be added (a OR b), subtracted (a AND (NOT b)), multiplied (a AND b) and negated (NOT a). (#231)

  • Rename all standard library modules from arlunio.lib.X to arlunio.X (#233)

Misc

  • Fix reference to flake8 in .pre-commit-config.yaml. Changed virtualenv name from .dev to .env (#227)

v0.0.6 - 2020-04-18

Features

  • Introduce the concept of operators. Operators are definitions that can provide implementations of the arithmetic operators in Python like + and -. Depending on the type a definition produces different operators can be defined that allow them to be combined in some way. The standard library has been updated to incorporate a few operators for working with masks. (#207)

  • Generalise definitions to accept any “regular” value as an input, not just width and height. In a similar way to attributes, when deriving from other definitions any inputs will be automatically inherited. (#216)

Docs

  • Added some documentation around the CI build for the blog. Also updated the blog build to run every day. (#177)

  • Tidied up and updated existing changelog, started using towncrier for changelog entries going forward. (#204)

  • Flatten structure of the User Guide section and add placeholder first tutorial (#205)

Misc

  • Fix handling of multiple notebooks in clean-notebook.sh and add VSCode tasks to aid with tutorial development (#205)

  • Switch the linting workflow to explicitly list the paths that should trigger a build. (#210)

  • Fix packaging so that our tests are no longer installed (#216)

v0.0.5 - 2020-03-18

Added

  • Empty and Full definitions

  • normalise, clamp and lerp functions

Changed

  • Definitions now have a produces classmethod that will report the type of object they produce - assuming that the type annotation has been given of course.

  • The ar.definition decorator now accurately reports the module a definition was defined in.

v0.0.4 - 2020-02-15

Added

  • The concept of a Definition.

    • This incorporates the existing concept of a Shape and expands on it to cover input parameters and more

    • Definitions can be derived from other definitions by passing in existing definitions as positional arguments. Derived definitions will inherit all attributes from their “parent” definitions.

Removed

  • The “magic” shape entry point, shapes should now be imported like regular Python classes.

v0.0.3 - 2019-12-30

Added

  • Pixelize shape that can take another shape and and render a lower res version of that shape giving it a pixel art vibe

  • Map shape that can take a grid of values representing some layout and a dictionary that maps those values to shapes that should be drawn there.

  • Proof of concept notebook importer

Changed

  • Add mkdirs flag to the :code`Image.save` function to have the option of automatically creating any required parent directories

  • Tweak the find_notebook function to handle the way we are using it in the gallery

v0.0.2 - 2019-09-04

  • Release to test new CI/CD setup

v0.0.1 - 2019-08-04

  • Stylo has been renamed to Arlunio, resetting the version number

  • Initial release to secure the name, more to follow