/
CHANGES.txt
225 lines (157 loc) · 7.05 KB
/
CHANGES.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
Changes
=======
2.7 (unreleased)
----------------
- Nothing changed yet.
2.6 (2014-07-16)
================
- compatibility for python 3
- update code to work with python2 and python3
- update doctests to work with python2 and python3
- adjust egg to work with newer version of setuptools
2.5 (2012-05-01)
----------------
- Introduce provideUtility, providerAdapter, provideSubscriptionAdapter,
provideHandler and provideInterface in grokcore.component. These by default
delegate the registration of components to the global site manager like
was done before, but provide the possibility for custom registries for the
grokked components.
- Fix the `global_adapter` to properly use information annotated by
``grok.adapter``, and using the IContext object if it was not
specified. (Fix Launchpad issue #960097).
- Add a ``key`` option to ``sort_components`` that behave like ``key``
options available on standard Python sort methods.
2.4 (2011-04-27)
----------------
- Fix the `global_adapter` directive implementation to accept an explicit
"empty" name for nameless adapter registrations (as it used to be that
providing an empty name in the registration would actually result in
registering a named adapter in case the factory has a `grok.name`).
2.3 (2011-02-14)
----------------
- Implement the generic (Multi)Subscriptions components.
2.2 (2010-11-03)
----------------
- The default values computation for the context directive and the provides
directive is now defined in the directives themselves. This means that where
the values for these directives is being retrieved, the "default_context"
function does not need to be passed along anymore for general cases.
Analogous to this, when getting values for the provides directive the
"default_provides" function does not need to be passed along in the general
case.
2.1 (2010-11-01)
----------------
* Made package comply to zope.org repository policy.
* Moved directives 'order' from grokcore.viewlet and 'path' from
grokcore.view to this very package.
* Tiny dependency adjustment: moved zope.event to test dependencies.
* Port from 1.x branch exclude parameter to the Grok ZCML directive.
* Port from 1.x branch the ignore of testing.py modules.
2.0 (2009-09-16)
----------------
* Use a newer version of Martian that has better support for
inheritance. This is demonstrated in ``tests/inherit``.
* The ``ContextGrokker`` and the ``scan.py`` module have gone away
thanks the newer Martian.
* Directive implementations (in their factory method) should *not*
bind directives. Directive binding cannot take place at import time,
but only at grok time. Binding directives during import time (when
directives are executed) can lead to change problems. (we noticed
this during our refactoring to use the new Martian).
* Use 1.0b1 versions.cfg in Grok's release info instead of a local
copy; a local copy for all grokcore packages is just too hard to
maintain.
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.