Added:
- modules for the hierarchy of graphical languages: traced, pivotal, compact, etc.
- a hierarchy of `Category` classes which serve as the domain and codomain of `Functor`
- an inheritance mechanism with factory methods that allow better code reuse, e.g. composition of diagrams is defined exactly once in `Arrow.then`
- syntactic sugar for whiskering, i.e. tensoring with an identity on a given object
- layers may have more than one box, the `foliation` method merges layers together
- module `discopy.drawing.grid` which will eventually replace the old `discopy.drawing.legacy`, with `to_ascii` and `to_html`
- the category of matrices with direct sum and the category of Python functions
- matrices and tensors are explicitly parameterised by their data type
- `tensor.Functor` now has an explicit `dom` and `dtype`
- `categorial` and `pregroup` now have their own `Diagram` class
- `grammar` now has two new modules `thue` (i.e. unrestricted grammar) and `dependency` (with an interface to spaCy)
Changed:
- a complete refactor of the documentation with a new "executable book" style
- more uniform syntax for arrows, diagrams, functions and matrices with the same signature `inside, dom, cod`
- `boxes` and `offsets` are now properties rather than attributes
- rename `Functor.ob_factory` and `Functor.ar_factory` to `Functor.cod.ob` and `Functor.cod.ar`
- better type checking and error handling, it is only possible to compose diagrams that are from the same factory
- types now behave like strings, i.e. indexing a type yields a type again
- `Circuit` is a now a subclass of `tensor.Diagram`
- rename `biclosed` to `closed`
- swap the semantics `curry(left=True)` and `curry(left=False)` for more consistency (i.e. `rigid.Diagram.curry` uses left adjoint when `left=True`)
- `rigid.Diagram.l` and `.r` now implement the diagrammatic transpose rather than the conjugate, they both call a new method `rotate`
Removed:
- nothing is imported from `rigid` by default anymore, thus `from discopy import Ty` must be replaced by `from discopy.X import Ty` for the desired module X (e.g. `rigid` or `grammar.pregroup`)
- `pregroup.draw` is gone, it will eventually become a special case of the new grid drawing
- `sympy` evaluation of tensor networks is gone, use `lambdify` instead
- no more `Swap` or `Spider` in `rigid`, it now goes to `compact` and `frobenius`