grokcore.component 4.1__tar.gz → 4.1.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (152) hide show
  1. {grokcore.component-4.1 → grokcore_component-4.1.1}/CHANGES.rst +9 -0
  2. {grokcore.component-4.1 → grokcore_component-4.1.1}/PKG-INFO +18 -2
  3. {grokcore.component-4.1 → grokcore_component-4.1.1}/setup.py +1 -1
  4. {grokcore.component-4.1 → grokcore_component-4.1.1}/src/grokcore/component/meta.py +3 -2
  5. grokcore_component-4.1.1/src/grokcore/component/tests/adapter/__init__.py +0 -0
  6. grokcore_component-4.1.1/src/grokcore/component/tests/directive/__init__.py +0 -0
  7. grokcore_component-4.1.1/src/grokcore/component/tests/event/__init__.py +0 -0
  8. grokcore_component-4.1.1/src/grokcore/component/tests/grokker/__init__.py +0 -0
  9. grokcore_component-4.1.1/src/grokcore/component/tests/grokker/onlyonce_fixture/__init__.py +0 -0
  10. grokcore_component-4.1.1/src/grokcore/component/tests/inherit/__init__.py +0 -0
  11. grokcore_component-4.1.1/src/grokcore/component/tests/order/__init__.py +0 -0
  12. grokcore_component-4.1.1/src/grokcore/component/tests/subscriptions/__init__.py +0 -0
  13. grokcore_component-4.1.1/src/grokcore/component/tests/utility/__init__.py +0 -0
  14. grokcore_component-4.1.1/src/grokcore/component/tests/view/__init__.py +0 -0
  15. grokcore_component-4.1.1/src/grokcore/component/tests/zcml/__init__.py +0 -0
  16. grokcore_component-4.1.1/src/grokcore/component/tests/zcml/conflict.py +26 -0
  17. grokcore_component-4.1.1/src/grokcore/component/tests/zcml/conflictpkg/__init__.py +0 -0
  18. grokcore_component-4.1.1/src/grokcore/component/tests/zcml/conflictpkg/fixture.py +23 -0
  19. grokcore_component-4.1.1/src/grokcore/component/tests/zcml/excludemanypkg/__init__.py +0 -0
  20. grokcore_component-4.1.1/src/grokcore/component/tests/zcml/excludepkg/__init__.py +0 -0
  21. {grokcore.component-4.1 → grokcore_component-4.1.1}/src/grokcore/component/util.py +3 -2
  22. {grokcore.component-4.1 → grokcore_component-4.1.1}/src/grokcore.component.egg-info/PKG-INFO +18 -2
  23. {grokcore.component-4.1 → grokcore_component-4.1.1}/src/grokcore.component.egg-info/SOURCES.txt +3 -0
  24. grokcore.component-4.1/src/grokcore/component/tests/__init__.py +0 -1
  25. grokcore.component-4.1/src/grokcore/component/tests/adapter/__init__.py +0 -1
  26. grokcore.component-4.1/src/grokcore/component/tests/directive/__init__.py +0 -1
  27. grokcore.component-4.1/src/grokcore/component/tests/event/__init__.py +0 -1
  28. grokcore.component-4.1/src/grokcore/component/tests/grokker/onlyonce_fixture/__init__.py +0 -1
  29. grokcore.component-4.1/src/grokcore/component/tests/inherit/__init__.py +0 -1
  30. grokcore.component-4.1/src/grokcore/component/tests/order/__init__.py +0 -1
  31. grokcore.component-4.1/src/grokcore/component/tests/subscriptions/__init__.py +0 -1
  32. grokcore.component-4.1/src/grokcore/component/tests/utility/__init__.py +0 -1
  33. grokcore.component-4.1/src/grokcore/component/tests/view/__init__.py +0 -1
  34. grokcore.component-4.1/src/grokcore/component/tests/zcml/__init__.py +0 -1
  35. grokcore.component-4.1/src/grokcore/component/tests/zcml/excludemanypkg/__init__.py +0 -1
  36. grokcore.component-4.1/src/grokcore/component/tests/zcml/excludepkg/__init__.py +0 -1
  37. {grokcore.component-4.1 → grokcore_component-4.1.1}/CONTRIBUTING.md +0 -0
  38. {grokcore.component-4.1 → grokcore_component-4.1.1}/COPYRIGHT.txt +0 -0
  39. {grokcore.component-4.1 → grokcore_component-4.1.1}/CREDITS.rst +0 -0
  40. {grokcore.component-4.1 → grokcore_component-4.1.1}/INSTALL.txt +0 -0
  41. {grokcore.component-4.1 → grokcore_component-4.1.1}/LICENSE.txt +0 -0
  42. {grokcore.component-4.1 → grokcore_component-4.1.1}/MANIFEST.in +0 -0
  43. {grokcore.component-4.1 → grokcore_component-4.1.1}/README.rst +0 -0
  44. {grokcore.component-4.1 → grokcore_component-4.1.1}/TODO.rst +0 -0
  45. {grokcore.component-4.1 → grokcore_component-4.1.1}/buildout.cfg +0 -0
  46. {grokcore.component-4.1 → grokcore_component-4.1.1}/setup.cfg +0 -0
  47. {grokcore.component-4.1 → grokcore_component-4.1.1}/src/grokcore/__init__.py +0 -0
  48. {grokcore.component-4.1 → grokcore_component-4.1.1}/src/grokcore/component/__init__.py +0 -0
  49. {grokcore.component-4.1 → grokcore_component-4.1.1}/src/grokcore/component/compat.py +0 -0
  50. {grokcore.component-4.1 → grokcore_component-4.1.1}/src/grokcore/component/components.py +0 -0
  51. {grokcore.component-4.1 → grokcore_component-4.1.1}/src/grokcore/component/decorators.py +0 -0
  52. {grokcore.component-4.1 → grokcore_component-4.1.1}/src/grokcore/component/directive.py +0 -0
  53. {grokcore.component-4.1 → grokcore_component-4.1.1}/src/grokcore/component/interfaces.py +0 -0
  54. {grokcore.component-4.1 → grokcore_component-4.1.1}/src/grokcore/component/meta.zcml +0 -0
  55. {grokcore.component-4.1 → grokcore_component-4.1.1}/src/grokcore/component/subscription.py +0 -0
  56. {grokcore.component-4.1 → grokcore_component-4.1.1}/src/grokcore/component/templates/default_display_form.pt +0 -0
  57. {grokcore.component-4.1 → grokcore_component-4.1.1}/src/grokcore/component/templates/default_edit_form.pt +0 -0
  58. {grokcore.component-4.1 → grokcore_component-4.1.1}/src/grokcore/component/testing.py +0 -0
  59. {grokcore.component-4.1/src/grokcore/component/tests/grokker → grokcore_component-4.1.1/src/grokcore/component/tests}/__init__.py +0 -0
  60. {grokcore.component-4.1 → grokcore_component-4.1.1}/src/grokcore/component/tests/adapter/adapter.py +0 -0
  61. {grokcore.component-4.1 → grokcore_component-4.1.1}/src/grokcore/component/tests/adapter/adapterdecorator.py +0 -0
  62. {grokcore.component-4.1 → grokcore_component-4.1.1}/src/grokcore/component/tests/adapter/alphabetical.py +0 -0
  63. {grokcore.component-4.1 → grokcore_component-4.1.1}/src/grokcore/component/tests/adapter/classcontext.py +0 -0
  64. {grokcore.component-4.1 → grokcore_component-4.1.1}/src/grokcore/component/tests/adapter/classcontextimported.py +0 -0
  65. {grokcore.component-4.1 → grokcore_component-4.1.1}/src/grokcore/component/tests/adapter/classcontextmultiple.py +0 -0
  66. {grokcore.component-4.1 → grokcore_component-4.1.1}/src/grokcore/component/tests/adapter/classcontextmultiple_fixture.py +0 -0
  67. {grokcore.component-4.1 → grokcore_component-4.1.1}/src/grokcore/component/tests/adapter/classorinterface.py +0 -0
  68. {grokcore.component-4.1 → grokcore_component-4.1.1}/src/grokcore/component/tests/adapter/conflict.py +0 -0
  69. {grokcore.component-4.1 → grokcore_component-4.1.1}/src/grokcore/component/tests/adapter/functionasargument_fixture.py +0 -0
  70. {grokcore.component-4.1 → grokcore_component-4.1.1}/src/grokcore/component/tests/adapter/functioncontext.py +0 -0
  71. {grokcore.component-4.1 → grokcore_component-4.1.1}/src/grokcore/component/tests/adapter/globaladapter.py +0 -0
  72. {grokcore.component-4.1 → grokcore_component-4.1.1}/src/grokcore/component/tests/adapter/implementsmany.py +0 -0
  73. {grokcore.component-4.1 → grokcore_component-4.1.1}/src/grokcore/component/tests/adapter/implementsnone.py +0 -0
  74. {grokcore.component-4.1 → grokcore_component-4.1.1}/src/grokcore/component/tests/adapter/implementsnonemulti.py +0 -0
  75. {grokcore.component-4.1 → grokcore_component-4.1.1}/src/grokcore/component/tests/adapter/importedmodel.py +0 -0
  76. {grokcore.component-4.1 → grokcore_component-4.1.1}/src/grokcore/component/tests/adapter/importedmodel2.py +0 -0
  77. {grokcore.component-4.1 → grokcore_component-4.1.1}/src/grokcore/component/tests/adapter/interface.py +0 -0
  78. {grokcore.component-4.1 → grokcore_component-4.1.1}/src/grokcore/component/tests/adapter/interfacemodule.py +0 -0
  79. {grokcore.component-4.1 → grokcore_component-4.1.1}/src/grokcore/component/tests/adapter/modulecontext.py +0 -0
  80. {grokcore.component-4.1 → grokcore_component-4.1.1}/src/grokcore/component/tests/adapter/modulecontextimported.py +0 -0
  81. {grokcore.component-4.1 → grokcore_component-4.1.1}/src/grokcore/component/tests/adapter/modulecontextmultiple.py +0 -0
  82. {grokcore.component-4.1 → grokcore_component-4.1.1}/src/grokcore/component/tests/adapter/modulecontextmultiple_fixture.py +0 -0
  83. {grokcore.component-4.1 → grokcore_component-4.1.1}/src/grokcore/component/tests/adapter/multiadapter.py +0 -0
  84. {grokcore.component-4.1 → grokcore_component-4.1.1}/src/grokcore/component/tests/adapter/multiadaptsnone.py +0 -0
  85. {grokcore.component-4.1 → grokcore_component-4.1.1}/src/grokcore/component/tests/adapter/multiple.py +0 -0
  86. {grokcore.component-4.1 → grokcore_component-4.1.1}/src/grokcore/component/tests/adapter/namedadapter.py +0 -0
  87. {grokcore.component-4.1 → grokcore_component-4.1.1}/src/grokcore/component/tests/adapter/noarguments_fixture.py +0 -0
  88. {grokcore.component-4.1 → grokcore_component-4.1.1}/src/grokcore/component/tests/adapter/nomodel.py +0 -0
  89. {grokcore.component-4.1 → grokcore_component-4.1.1}/src/grokcore/component/tests/adapter/oldstyleclass.py +0 -0
  90. {grokcore.component-4.1 → grokcore_component-4.1.1}/src/grokcore/component/tests/adapter/order.py +0 -0
  91. {grokcore.component-4.1 → grokcore_component-4.1.1}/src/grokcore/component/tests/adapter/providerdecorator.py +0 -0
  92. {grokcore.component-4.1 → grokcore_component-4.1.1}/src/grokcore/component/tests/api.txt +0 -0
  93. {grokcore.component-4.1 → grokcore_component-4.1.1}/src/grokcore/component/tests/directive/argumenterror.py +0 -0
  94. {grokcore.component-4.1 → grokcore_component-4.1.1}/src/grokcore/component/tests/directive/argumenterror_fixture.py +0 -0
  95. {grokcore.component-4.1 → grokcore_component-4.1.1}/src/grokcore/component/tests/directive/multipletimes.py +0 -0
  96. {grokcore.component-4.1 → grokcore_component-4.1.1}/src/grokcore/component/tests/event/errorconditions.py +0 -0
  97. {grokcore.component-4.1 → grokcore_component-4.1.1}/src/grokcore/component/tests/event/errorconditions_fixture.py +0 -0
  98. {grokcore.component-4.1 → grokcore_component-4.1.1}/src/grokcore/component/tests/event/provideHandler.py +0 -0
  99. {grokcore.component-4.1 → grokcore_component-4.1.1}/src/grokcore/component/tests/event/subscriber.py +0 -0
  100. {grokcore.component-4.1 → grokcore_component-4.1.1}/src/grokcore/component/tests/grok_component.txt +0 -0
  101. {grokcore.component-4.1 → grokcore_component-4.1.1}/src/grokcore/component/tests/grokker/continue_scanning.py +0 -0
  102. {grokcore.component-4.1 → grokcore_component-4.1.1}/src/grokcore/component/tests/grokker/continue_scanning_fixture.py +0 -0
  103. {grokcore.component-4.1 → grokcore_component-4.1.1}/src/grokcore/component/tests/grokker/grokcomponent.py +0 -0
  104. {grokcore.component-4.1 → grokcore_component-4.1.1}/src/grokcore/component/tests/grokker/onlyonce.py +0 -0
  105. {grokcore.component-4.1 → grokcore_component-4.1.1}/src/grokcore/component/tests/grokker/onlyonce_fixture/_meta.py +0 -0
  106. {grokcore.component-4.1 → grokcore_component-4.1.1}/src/grokcore/component/tests/grokker/onlyonce_fixture/component.py +0 -0
  107. {grokcore.component-4.1 → grokcore_component-4.1.1}/src/grokcore/component/tests/grokker/onlyonce_fixture/implementation.py +0 -0
  108. {grokcore.component-4.1 → grokcore_component-4.1.1}/src/grokcore/component/tests/grokker/priority.py +0 -0
  109. {grokcore.component-4.1 → grokcore_component-4.1.1}/src/grokcore/component/tests/grokker/priority_fixture.py +0 -0
  110. {grokcore.component-4.1 → grokcore_component-4.1.1}/src/grokcore/component/tests/inherit/inherit.py +0 -0
  111. {grokcore.component-4.1 → grokcore_component-4.1.1}/src/grokcore/component/tests/inherit/inherit_fixture.py +0 -0
  112. {grokcore.component-4.1 → grokcore_component-4.1.1}/src/grokcore/component/tests/order/arg_orderdirective.py +0 -0
  113. {grokcore.component-4.1 → grokcore_component-4.1.1}/src/grokcore/component/tests/order/combined_orderdirective.py +0 -0
  114. {grokcore.component-4.1 → grokcore_component-4.1.1}/src/grokcore/component/tests/order/combinednoorder_orderdirective.py +0 -0
  115. {grokcore.component-4.1 → grokcore_component-4.1.1}/src/grokcore/component/tests/order/inter1.py +0 -0
  116. {grokcore.component-4.1 → grokcore_component-4.1.1}/src/grokcore/component/tests/order/inter2.py +0 -0
  117. {grokcore.component-4.1 → grokcore_component-4.1.1}/src/grokcore/component/tests/order/noarg_orderdirective.py +0 -0
  118. {grokcore.component-4.1 → grokcore_component-4.1.1}/src/grokcore/component/tests/order/nodirective.py +0 -0
  119. {grokcore.component-4.1 → grokcore_component-4.1.1}/src/grokcore/component/tests/subscriptions/decorator.py +0 -0
  120. {grokcore.component-4.1 → grokcore_component-4.1.1}/src/grokcore/component/tests/subscriptions/multisubscriptions.py +0 -0
  121. {grokcore.component-4.1 → grokcore_component-4.1.1}/src/grokcore/component/tests/subscriptions/multisubscriptions_no_adapts.py +0 -0
  122. {grokcore.component-4.1 → grokcore_component-4.1.1}/src/grokcore/component/tests/subscriptions/multisubscriptions_no_interface.py +0 -0
  123. {grokcore.component-4.1 → grokcore_component-4.1.1}/src/grokcore/component/tests/subscriptions/ordered_multisubscriptions.py +0 -0
  124. {grokcore.component-4.1 → grokcore_component-4.1.1}/src/grokcore/component/tests/subscriptions/ordered_subscriptions.py +0 -0
  125. {grokcore.component-4.1 → grokcore_component-4.1.1}/src/grokcore/component/tests/subscriptions/subscriptions.py +0 -0
  126. {grokcore.component-4.1 → grokcore_component-4.1.1}/src/grokcore/component/tests/subscriptions/subscriptions_no_context.py +0 -0
  127. {grokcore.component-4.1 → grokcore_component-4.1.1}/src/grokcore/component/tests/subscriptions/subscriptions_no_interface.py +0 -0
  128. {grokcore.component-4.1 → grokcore_component-4.1.1}/src/grokcore/component/tests/test_grok.py +0 -0
  129. {grokcore.component-4.1 → grokcore_component-4.1.1}/src/grokcore/component/tests/utility/conflict.py +0 -0
  130. {grokcore.component-4.1 → grokcore_component-4.1.1}/src/grokcore/component/tests/utility/implementsmany.py +0 -0
  131. {grokcore.component-4.1 → grokcore_component-4.1.1}/src/grokcore/component/tests/utility/implementsmany2.py +0 -0
  132. {grokcore.component-4.1 → grokcore_component-4.1.1}/src/grokcore/component/tests/utility/implementsnone.py +0 -0
  133. {grokcore.component-4.1 → grokcore_component-4.1.1}/src/grokcore/component/tests/utility/implementsnone2.py +0 -0
  134. {grokcore.component-4.1 → grokcore_component-4.1.1}/src/grokcore/component/tests/utility/providesmany.py +0 -0
  135. {grokcore.component-4.1 → grokcore_component-4.1.1}/src/grokcore/component/tests/utility/providesmany2.py +0 -0
  136. {grokcore.component-4.1 → grokcore_component-4.1.1}/src/grokcore/component/tests/utility/providesnone.py +0 -0
  137. {grokcore.component-4.1 → grokcore_component-4.1.1}/src/grokcore/component/tests/utility/providesnone2.py +0 -0
  138. {grokcore.component-4.1 → grokcore_component-4.1.1}/src/grokcore/component/tests/utility/utility.py +0 -0
  139. {grokcore.component-4.1 → grokcore_component-4.1.1}/src/grokcore/component/tests/view/nomodulename.py +0 -0
  140. {grokcore.component-4.1 → grokcore_component-4.1.1}/src/grokcore/component/tests/view/nomodulename_fixture.py +0 -0
  141. {grokcore.component-4.1 → grokcore_component-4.1.1}/src/grokcore/component/tests/zcml/exclude.py +0 -0
  142. {grokcore.component-4.1 → grokcore_component-4.1.1}/src/grokcore/component/tests/zcml/excludemany.py +0 -0
  143. {grokcore.component-4.1 → grokcore_component-4.1.1}/src/grokcore/component/tests/zcml/excludemanypkg/file_1.py +0 -0
  144. {grokcore.component-4.1 → grokcore_component-4.1.1}/src/grokcore/component/tests/zcml/excludemanypkg/test_asdf.py +0 -0
  145. {grokcore.component-4.1 → grokcore_component-4.1.1}/src/grokcore/component/tests/zcml/excludepkg/sample.py +0 -0
  146. {grokcore.component-4.1 → grokcore_component-4.1.1}/src/grokcore/component/zcml.py +0 -0
  147. {grokcore.component-4.1 → grokcore_component-4.1.1}/src/grokcore.component.egg-info/dependency_links.txt +0 -0
  148. {grokcore.component-4.1 → grokcore_component-4.1.1}/src/grokcore.component.egg-info/namespace_packages.txt +0 -0
  149. {grokcore.component-4.1 → grokcore_component-4.1.1}/src/grokcore.component.egg-info/not-zip-safe +0 -0
  150. {grokcore.component-4.1 → grokcore_component-4.1.1}/src/grokcore.component.egg-info/requires.txt +0 -0
  151. {grokcore.component-4.1 → grokcore_component-4.1.1}/src/grokcore.component.egg-info/top_level.txt +0 -0
  152. {grokcore.component-4.1 → grokcore_component-4.1.1}/tox.ini +0 -0
@@ -1,6 +1,15 @@
1
1
  Changes
2
2
  =======
3
3
 
4
+ 4.1.1 (2025-01-28)
5
+ ------------------
6
+
7
+ - Adjust discriminator for adapters so it matches the one used by the
8
+ ``zope.component`` ZCML directive (``<adapter factory=""/>``) and thus a
9
+ conflict error is raised if there are two registrations for the same
10
+ discriminator.
11
+
12
+
4
13
  4.1 (2023-03-21)
5
14
  ----------------
6
15
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: grokcore.component
3
- Version: 4.1
3
+ Version: 4.1.1
4
4
  Summary: Grok-like configuration for basic components (adapters, utilities, subscribers)
5
5
  Home-page: https://github.com/zopefoundation/grokcore.component
6
6
  Author: Grok Team
@@ -19,8 +19,15 @@ Classifier: Programming Language :: Python :: 3.11
19
19
  Classifier: Programming Language :: Python :: Implementation :: CPython
20
20
  Classifier: Programming Language :: Python :: Implementation :: PyPy
21
21
  Requires-Python: >=3.7
22
- Provides-Extra: test
23
22
  License-File: LICENSE.txt
23
+ Requires-Dist: setuptools
24
+ Requires-Dist: martian>=1.2
25
+ Requires-Dist: zope.component
26
+ Requires-Dist: zope.configuration
27
+ Requires-Dist: zope.interface
28
+ Requires-Dist: zope.testing
29
+ Provides-Extra: test
30
+ Requires-Dist: zope.event; extra == "test"
24
31
 
25
32
  This package provides base classes of basic component types for the
26
33
  Zope Component Architecture, as well as means for configuring and
@@ -268,6 +275,15 @@ multiple objects.
268
275
  Changes
269
276
  =======
270
277
 
278
+ 4.1.1 (2025-01-28)
279
+ ------------------
280
+
281
+ - Adjust discriminator for adapters so it matches the one used by the
282
+ ``zope.component`` ZCML directive (``<adapter factory=""/>``) and thus a
283
+ conflict error is raised if there are two registrations for the same
284
+ discriminator.
285
+
286
+
271
287
  4.1 (2023-03-21)
272
288
  ----------------
273
289
 
@@ -20,7 +20,7 @@ tests_require = [
20
20
 
21
21
  setup(
22
22
  name='grokcore.component',
23
- version='4.1',
23
+ version='4.1.1',
24
24
  author='Grok Team',
25
25
  author_email='zope-dev@zope.dev',
26
26
  url='https://github.com/zopefoundation/grokcore.component',
@@ -45,10 +45,11 @@ class AdapterGrokker(martian.ClassGrokker):
45
45
  martian.directive(grokcore.component.name)
46
46
 
47
47
  def execute(self, factory, config, context, provides, name, **kw):
48
+ for_ = (context,)
48
49
  config.action(
49
- discriminator=('adapter', context, provides, name),
50
+ discriminator=('adapter', for_, provides, name),
50
51
  callable=grokcore.component.provideAdapter,
51
- args=(factory, (context,), provides, name),
52
+ args=(factory, for_, provides, name),
52
53
  )
53
54
  return True
54
55
 
@@ -0,0 +1,26 @@
1
+ """
2
+ It raises ConflictError if ZCML and grok try to register an adapter from/to
3
+ the same classes.
4
+
5
+ >>> xmlconfig.string('''
6
+ ... <configure
7
+ ... xmlns="http://namespaces.zope.org/zope"
8
+ ... xmlns:grok="http://namespaces.zope.org/grok">
9
+ ... <include package="zope.component" file="meta.zcml"/>
10
+ ... <include package="grokcore.component" file="meta.zcml"/>
11
+ ... <adapter factory=".fixture.ZCMLHome" />
12
+ ... <grok:grok package="." />
13
+ ... </configure>''', context)
14
+ Traceback (most recent call last):
15
+ ConfigurationConflictError: ...
16
+
17
+ """
18
+
19
+ from zope.configuration import xmlconfig
20
+
21
+ from grokcore.component.tests.zcml import conflictpkg
22
+
23
+
24
+ context = xmlconfig.ConfigurationMachine()
25
+ xmlconfig.registerCommonDirectives(context)
26
+ context.package = conflictpkg
@@ -0,0 +1,23 @@
1
+ from zope import component
2
+ from zope import interface
3
+
4
+ import grokcore.component as grok
5
+
6
+
7
+ class Cave(grok.Context):
8
+ pass
9
+
10
+
11
+ class IHome(interface.Interface):
12
+ pass
13
+
14
+
15
+ @grok.implementer(IHome)
16
+ class GrokHome(grok.Adapter):
17
+ pass
18
+
19
+
20
+ @component.adapter(Cave)
21
+ @interface.implementer(IHome)
22
+ class ZCMLHome:
23
+ pass
@@ -34,8 +34,9 @@ def sort_components(components, key=None):
34
34
  """Sort a list of components using the information provided by
35
35
  `grok.order`.
36
36
  """
37
- sort_key = _sort_key
38
- if key is not None:
37
+ if key is None:
38
+ sort_key = _sort_key
39
+ else:
39
40
  def sort_key(item):
40
41
  return _sort_key(key(item))
41
42
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: grokcore.component
3
- Version: 4.1
3
+ Version: 4.1.1
4
4
  Summary: Grok-like configuration for basic components (adapters, utilities, subscribers)
5
5
  Home-page: https://github.com/zopefoundation/grokcore.component
6
6
  Author: Grok Team
@@ -19,8 +19,15 @@ Classifier: Programming Language :: Python :: 3.11
19
19
  Classifier: Programming Language :: Python :: Implementation :: CPython
20
20
  Classifier: Programming Language :: Python :: Implementation :: PyPy
21
21
  Requires-Python: >=3.7
22
- Provides-Extra: test
23
22
  License-File: LICENSE.txt
23
+ Requires-Dist: setuptools
24
+ Requires-Dist: martian>=1.2
25
+ Requires-Dist: zope.component
26
+ Requires-Dist: zope.configuration
27
+ Requires-Dist: zope.interface
28
+ Requires-Dist: zope.testing
29
+ Provides-Extra: test
30
+ Requires-Dist: zope.event; extra == "test"
24
31
 
25
32
  This package provides base classes of basic component types for the
26
33
  Zope Component Architecture, as well as means for configuring and
@@ -268,6 +275,15 @@ multiple objects.
268
275
  Changes
269
276
  =======
270
277
 
278
+ 4.1.1 (2025-01-28)
279
+ ------------------
280
+
281
+ - Adjust discriminator for adapters so it matches the one used by the
282
+ ``zope.component`` ZCML directive (``<adapter factory=""/>``) and thus a
283
+ conflict error is raised if there are two registrations for the same
284
+ discriminator.
285
+
286
+
271
287
  4.1 (2023-03-21)
272
288
  ----------------
273
289
 
@@ -126,8 +126,11 @@ src/grokcore/component/tests/view/__init__.py
126
126
  src/grokcore/component/tests/view/nomodulename.py
127
127
  src/grokcore/component/tests/view/nomodulename_fixture.py
128
128
  src/grokcore/component/tests/zcml/__init__.py
129
+ src/grokcore/component/tests/zcml/conflict.py
129
130
  src/grokcore/component/tests/zcml/exclude.py
130
131
  src/grokcore/component/tests/zcml/excludemany.py
132
+ src/grokcore/component/tests/zcml/conflictpkg/__init__.py
133
+ src/grokcore/component/tests/zcml/conflictpkg/fixture.py
131
134
  src/grokcore/component/tests/zcml/excludemanypkg/__init__.py
132
135
  src/grokcore/component/tests/zcml/excludemanypkg/file_1.py
133
136
  src/grokcore/component/tests/zcml/excludemanypkg/test_asdf.py
@@ -1 +0,0 @@
1
- # make this directory a package
@@ -1 +0,0 @@
1
- # this is a package
@@ -1 +0,0 @@
1
- # this is a package
@@ -1 +0,0 @@
1
- # this is a package
@@ -1 +0,0 @@
1
- # this is a package
@@ -1 +0,0 @@
1
- # this is a package
@@ -1 +0,0 @@
1
- # this is a package