esper 2.1
=========
Maintenance release

Changes
-------
- Fix bug when adding a function as an event handler.
- Add some event handler unit tests.


esper 2.0
=========
Feature release

Changes
-------
- Add a simple event system, for registering and dispatching events.
- Replace usage of the lru_cache module with internal cache.
- To help with type checking, esper has been converted to a package.


esper 1.5
=========
Maintenance release

Changes
-------
- Update documentation with notes about dataclass decorator usage.
- Add Python 3.9 to Continuous Integration testing.
- The behavior of the `try_component` & `try_components` methods has changed slightly.


esper 1.4
=========
Maintenance release

Changes
-------
- Add missing docstrings.
- Add additional typing definitions.


esper 1.3
=========
Feature release

Changes
-------
- Add new `World.has_components` method which allows multiple Component queries. Returns a boolean.
- Add new `World.try_components` method which allows multiple Component queries.
- Add Python 3.8 to Continuous Integration testing.


esper 1.2
=========
Feature release

Changes
-------
- Calls to `super()` are no longer necessary in your Processor subclasses.
- Update README with more usage examples. All methods should now have at least one example.
- Include wheels for PyPi to help with packaging systems that only support wheels. (#38)


esper 1.0.0
===========
Feature release

Changes
-------
- Use lru_caching internally by default. The cache is currently
- Allow passing kwargs to Processors.
- Include Python 3.7 in Continuous Integration testing.


esper 0.9.9
===========
Feature release

Changes
-------
- Condense esper into a single file -> esper.py.


esper 0.9.8
===========
Feature release

Changes
-------
- New timer argument for World to assist in profiling Processor execution times.
- Consolidate and clean up the benchmarks.


esper 0.9.7
===========
Feature release

Changes
-------
- Lazily delete entities by default, preventing errors while iterating.


esper 0.9.6
===========
Feature release

Changes
-------
- Add new `World.get_processor` convenience method which returns a Processor instance by type.


esper 0.9.5
===========
Feature release

Changes
-------
- Add `World.components_for_entity` method which returns a tuple of an Entity's Components.
- The `World.component_for_entity` method will raise a KeyError if the Entity ID does not exist.


esper 0.9.4
===========
Feature release

Changes
-------
- Add new method `World.has_component` which returns a Boolean (True/False).


esper 0.9.3
===========
Feature release

Changes
-------
- Rename `World.delete_component` to `World.remove_component` for API consistency.
- `World.delete_entity` and `World.remove_component` will raise a KeyError if the Entity or
  Component do not exist.


esper 0.9.2
===========
Feature release

Changes
-------
- Switch to different internal database structure. (No API changes)
- Add examples for pyglet.
- Multiple Component queries are faster.


esper 0.9.0
===========
Feature release

Changes
-------
- First usable release.
- Included examples for Pygame and PySDL2.
