Skip to main content

Easily hook into the ZCML processing machinery

Project description

Introduction

This package provides means of hooking into the Zope (ZCML) configuration process.

Custom ZCML actions

It is sometimes useful to execute a function during the execution of configuration actions, for example to perform one-off configuration that does not warrant a new directive. The <zcml:customAction /> directive is provided for this purpose.

For example, you may want to call a function called my.package.finalConfiguration() “late” in the configuration action execution cycle. This can be achieved with the following ZCML statements:

<configure
    xmlns="http://namespaces.zope.org/zope"
    xmlns:zcml="http://namespaces.zope.org/zcml"
    i18n_domain="my.package">

    <include package="z3c.zcmlhook" file="meta.zcml" />

    <zcml:customAction
        handler="my.package.finalConfiguration"
        order="9999"
        />

</configure>

The handler attribute gives the name of a function to execute. The function should take no arguments. The order attribute is optional, and can be used to influence when in the configuration cycle the function is executed. The default value for this, as for most Zope configuration actions, is 0.

Overriding custom actions

If you want to override the invocation of a custom handler in an overrides.zcml, you need to tell zope.configuration which handler to override. You can do that by setting the discriminator explicitly. A discriminator is used to uniquely identify a configuration action. In the case of the <zcml:customAction /> directive, the discriminator is based on the full dotted name to the function by default. Thus, you could override the function call above like so:

<zcml:customAction
    handler="my.otherpackage.overrideFinalConfiguration"
    discriminator="my.package.finalConfiguration"
    order="9999"
    />

Using a handler more than once

The discriminator attribute can also be used to explicitly allow using the same handler more than once. If you wanted to call my.package.finalConfiguration again, you would normally get a configuration conflict. However, with a (unique) custom discriminator, the second call is allowed:

<zcml:customAction
    handler="my.package.finalConfiguration"
    discriminator="my.package.finalConfiguration:early"
    order="-9999"
    />

<zcml:customAction
    handler="my.package.finalConfiguration"
    discriminator="my.package.finalConfiguration:late"
    order="9999"
    />

Here, we are attempting to call our configuration action “very early” as well as “very late” in the configuration process.

Changelog

3.0 (2025-04-14)

  • Drop support for pkg_resources namespace and replace it with PEP 420 native namespace.

2.1 (2025-03-31)

  • Add support for Python 3.12, 3.13.

  • Drop support for Python 3.7, 3.8.

2.0 (2023-02-24)

  • Add support for Python 3.10, 3.11.

  • Drop support for Python 2.7, 3.5, 3.6.

1.1 (2021-02-15)

  • Add support for Python 3.5, 3.6, 3.7, 3.8 and 3.9.

  • Add test extra to declare test dependency on zope.component [test]. [icemac]

1.0b1 (2010-01-02)

  • Initial release [optilude]

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

z3c_zcmlhook-3.0.tar.gz (8.9 kB view details)

Uploaded Source

Built Distribution

z3c_zcmlhook-3.0-py3-none-any.whl (7.2 kB view details)

Uploaded Python 3

File details

Details for the file z3c_zcmlhook-3.0.tar.gz.

File metadata

  • Download URL: z3c_zcmlhook-3.0.tar.gz
  • Upload date:
  • Size: 8.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for z3c_zcmlhook-3.0.tar.gz
Algorithm Hash digest
SHA256 bec4ff2ce6464ba92d34986ea4bcc2fce473af62d697cb3471e24cad6cf64f5c
MD5 de674122fd3be29dc86dcf9e05f8a1c6
BLAKE2b-256 c37de43320a605802b324e276ce01ae71761a546e9d9293bf2cc47b365fc7c7f

See more details on using hashes here.

File details

Details for the file z3c_zcmlhook-3.0-py3-none-any.whl.

File metadata

  • Download URL: z3c_zcmlhook-3.0-py3-none-any.whl
  • Upload date:
  • Size: 7.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for z3c_zcmlhook-3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 bfa818d6291376874475599c7e92485165a6277777a346e1594bcadb656e0e73
MD5 d54db89055f5f59db02bea57ced03198
BLAKE2b-256 13e80a8607d7a39e001da54d25bfae93e731bef8a5f2de2d3ef8d3434c101604

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page