Skip to main content

ftw.autofeature automatically registers ZCML features.

Project description

ftw.autofeature automatically registers ZCML features.

Extras features

The autofeature:extras directive automatically registers ZCML features for each extra (extras_requires) of your package. The feature for an extra is automatically provided when each dependency of the extra is installed.

Example

When having a setup.py like this:

from setuptools import setup, find_packages

setup(name='my.package',
      version='1.0.0dev0',
      packages=find_packages(exclude=['ez_setup']),
      namespace_packages=['my'],
      install_requires=[
          'setuptools',
          'ftw.autofeature',
      ],

      extras_require={
          'tests': ['unittest2'],
          'foo': ['foo', 'foo-compat'],
          'bar': ['bar', 'bar-compat']})

you can let ftw.autofeature automatically declare features for your extras:

<configure
    xmlns="http://namespaces.zope.org/zope"
    xmlns:zcml="http://namespaces.zope.org/zcml"
    xmlns:autofeature="http://namespaces.zope.org/autofeature">

    <include package="ftw.autofeature" file="meta.zcml" />
    <autofeature:extras />

    <configure zcml:condition="have my.package:foo">
        <!-- foo things -->
    </configure>

    <configure zcml:condition="have my.package:bar">
        <!-- bar things -->
    </configure>

    <configure zcml:condition="have my.package:foo:bar">
        <!-- foo and bar things -->
    </configure>

</configure>

The feature my.package:foo is only registered when the extras is installed. When installing both, foo and bar, multiple features are registered so that it easy to combine extras with AND:

  • my.package:foo

  • my.package:foo:bar

  • my.package:bar

  • my.package:bar:foo

Limitiation

We cannot really detect whether the extras was explictly used on installation time. We therefore test whether each dependency in the extras is installed. When each dependency is installed but not the extras explicitly, this will thus also register the feature.

Dump feature

The autofeature:dump directive dumps the currently registered ZCML features to the standard out. Simply use the directive to dump the features at any point in the ZCML:

<configure
    xmlns="http://namespaces.zope.org/zope"
    xmlns:autofeature="http://namespaces.zope.org/autofeature">

    <include package="ftw.autofeature" file="meta.zcml" />
    <autofeature:dump />

</configure>

Changelog

1.0.0 (2015-08-24)

  • Initial implementation [jone]

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

ftw.autofeature-1.0.0.tar.gz (12.6 kB view details)

Uploaded Source

File details

Details for the file ftw.autofeature-1.0.0.tar.gz.

File metadata

File hashes

Hashes for ftw.autofeature-1.0.0.tar.gz
Algorithm Hash digest
SHA256 0ec3f1030ff638c6149111d8d5be6de9ba7d51158a7bfebba6eaf14e5c82eeb7
MD5 b373870639d196c230ce75600200d576
BLAKE2b-256 4bfe431200ae6450bd8e1c711ba62899f908cb96ee8a26dab034964a09636103

See more details on using hashes here.

Supported by

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