Changes
=======

1.8 (2009-12-13)
----------------

* Fixed dependencies (copied from trunk).

1.7 (2009-06-01)
----------------

* Add missing provider, global_adapter, implementsOnly, classProvides() to
  the module interface so that they are included in __all__

1.6 (2009-04-10)
----------------

* Add convenience imports for implementsOnly() and classProvides() class
  declarations form zope.interface.

* Add support for registering global adapters at module level::

    grok.global_adapter(factory, (IAdapted1, IAdapted2,), IProvided, name=u"name")
    
  Only 'factory' is required. If only a single interface is adapted, the
  second argument may be a single interface instead of a tuple. If the
  component has declared adapted/provided interfaces, the second and third
  arguments may be omitted.

* Add support for an @provider decorator to let a function directly provide
  an interface::
  
    @grok.provider(IFoo, IBar)
    def some_function():
        ...
        
  This is equivalent to doing alsoProvides(some_function, IFoo, IBar).

* Add support for named adapters with the @adapter decorator::

    @grok.adapter(IAdaptedOne, IAdaptedTwo, name=u"foo")
    def some_function(one, two):
        ...

1.5.1 (2008-07-28)
------------------

* The ``IGrokcoreComponentAPI`` interface was missing declarations for
  the ``title`` and ``description`` directives.

1.5 (2008-07-22)
----------------

* Fix https://bugs.launchpad.net/grok/+bug/242353: grokcore.component
  contains old-style test setup. There is no `register_all_tests`
  method in grokcore.component.testing anymore. Use z3c.testsetup
  instead.

* Allow functions that have been marked with @grok.subscribe also be
  registered with ``zope.component.provideHandler()`` manually.  This
  is useful for unit tests where you may not want to grok a whole
  module.

* Document grokcore.component's public API in an interface,
  ``IGrokcoreComponentAPI``.  When you now do::

    from grokcore.component import *

  only the items documented in that interface will be imported into
  your local namespace.

1.4 (2008-06-11)
----------------

* Ported class grokkers to make use of further improvements in Martian. 
  This requires Martian 0.10.

1.3 (2008-05-14)
----------------

* Ported class grokkers to make use of the new declarative way of
  retrieving directive information from a class.  This requires
  Martian 0.9.6.

1.2.1 (2008-05-04)
------------------

* Upgrade to Martian 0.9.5, which has a slight change in the signature of
  ``scan_for_classes``.

* Remove an unnecessary import ``methods_from_class`` from
  ``grokcore.component.scan``.

1.2 (2008-05-04)
----------------

* Ported directives to Martian's new directive implementation.  As a
  result, nearly all helper functions that were available from
  ``grokcore.component.util`` have been removed.  The functionality is
  mostly available from the directives themselves now.

* The ``baseclass`` directive has been moved to Martian.

* The ``order`` directive and its helper functions have been moved
  back to Grok, as it was of no general use, but very specific to
  viewlets.

1.1 (2008-05-03)
----------------

* ``determine_module_component`` now looks for classes that implement
  a certain interface (such as ``IContext``), instead of taking a list
  of classes.  If looking for ``IContext``, it still will find
  ``Context`` subclasses, as these were also made to implement
  ``IContext``.

* Move the ``public_methods_from_class`` helper function back to Grok,
  it isn't used at all in ``grokcore.component``.

1.0.1 (2008-05-02)
------------------

* The grokkers for adapters and global utilities did not use the
  correct value for the *provided* interface in the configuration
  action discriminator.  Because of this, uninformative and
  potentially wrong conflict errors would occur, as well as no
  conflict where a conflict should have occurred.

* The grokker for the ``global_utility()`` directive did immediate
  registrations instead of generating configuration actions.
  Therefore it did not provoke ``ConflictErrors`` for conflicting
  registrations.

* Improved documentation

1.0 (2008-05-01)
----------------

* Created ``grokcore.component`` in March 2008 by factoring basic
  component base classes and their directives and grokkers out of
  Grok.
