Skip to main content

Grok-like configuration for Zope local site and utilities

Project description

This package provides support to write local site and utilities for Zope directly in Python (without ZCML).

Setting up grokcore.site

This package is essentially set up like the grokcore.component package, please refer to its documentation for details. The only additional ZCML line you will need is:

<include package="grokcore.site" />

Put this somewhere near the top of your root ZCML file but below the line where you include grokcore.component’s configuration.

Examples

Global utilities are already managed by grokcore.component.

Here a simple example of a local utility:

from zope.interface import implements, Interface
import grokcore.site

class IKangaroo(Interface):

    def jump():
       """Make all kangaroos jump somewhere.
       """

class KangarooUtility(grokcore.site.LocalUtility):
    implements(IKangaroo)

    def jump(self):
        pass

Now, we can register our utility to a local site. That will create automatically, and register that utility when we create that site:

class Jungle(grokcore.site.Site):

    grokcore.site.local_utility(KangarooUtility, IKangaroo)

If you don’t add the last line, you will still have your site, but nothing to make jump your kangaroo. Then, you will be able to add manually by hand after (if you want).

API Overview

Base classes

Site

Base class for your site.

LocalUtility

Base class for a ZODB-persitent local utility.

Directives

local_utility(factory, provides=None, name=u'', setup=None, public=False, name_in_container=None)

Directive used on a site to register a local utility at the creation time:

factory

Would be the component to register (required parameter),

provides

Would be the interface used to query the local utility (required parameter),

name

Would be the name used to query the local utility,

setup

Would be a function taking parameter. If defined it will be called after the utility is created with it as first and unique parameter.

public

If true, the utility will be created in the site container itself, not in the site manager, and public will be able to access it directly.

name_in_container

Would be used as id for the utility in container itwill be created. If not defined it will ask NameChooser to pick a name for it.

In addition, the grokcore.site package exposes the grokcore.component API.

Changes

5.1 (2026-03-19)

  • Move package metadata from setup.py to pyproject.toml.

  • Add support for Python 3.14.

  • Drop support for Python 3.9.

5.0 (2025-06-18)

  • Replace pkg_resources namespace with PEP 420 native namespace.

4.1 (2025-05-27)

  • Add support for Python 3.12, 3.13.

  • Drop support for Python 3.7, 3.8.

4.0 (2023-07-11)

  • Drop support for Python 2.7, 3.5, 3.6.

  • Add support for Python 3.9, 3.10, 3.11.

  • Adapt code to zope.site >= 4.4 thus requiring at least that version. (#7)

3.1 (2020-09-02)

  • Fix DeprecationWarnings.

  • Drop support for Python 3.4 and add support for 3.7 and 3.8.

3.0.3 (2018-01-12)

  • Rearrange tests such that Travis CI can pick up all functional tests too.

3.0.2 (2018-01-11)

  • Do not import getSite from zope.site.hooks anymore but from zope.component.hooks.

3.0.1 (2018-01-10)

  • Fix dependencies by removing ZODB3.

3.0.0 (2018-01-05)

  • Python 3 compatibility.

1.8 (2016-09-21)

  • When removing a site make sure reference are removed from the parent site.

1.7.1 (2016-01-29)

  • Update tests.

1.7 (2015-06-11)

  • Add a new directive install_on that is usable on a site. This directive let you customize when (namely the event) to install the configured local sites.

  • Rename ApplicationInitializedEvent to ApplicationAddedEvent.

  • When the IApplicationAddedEvent is triggered the new application will be current Zope local site. The site is restored after the event.

1.6.1 (2012-05-02)

  • Exposed ApplicationInitializedEvent and IApplicationInitializedEvent.

  • Added the missing import for the exposed IApplication interface.

1.6 (2012-05-01)

  • Moved the directive site from Grok to this package.

  • Moved the component Application and all the related utilities from Grok to this package.

1.5 (2011-01-03)

  • Moved IApplication and getApplication from the Grok package into this one.

1.4 (2010-11-01)

  • Upped versions requirements for martian and grokcore.component.

1.3 (2010-10-18)

  • Made package comply to repository policy.

  • Update functional tests to only use zope.app.appsetup instead of zope.app.testing.

  • Update functional tests not to require zope.app.zcmlfiles anymore.

1.2 (2009-12-20)

  • Migrated imports from zope.app.component to zope.site.

1.1 (2009-09-18)

  • Updated dependencies (added missing ones and added separate test dependencies).

  • A local utility now implements IAttributeAnnotatable.

  • Update code documentation from Grok itself.

  • Use 1.0b2 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.0.1 (2009-06-30)

  • Reupload to pypi with a correct version of Python which doesn’t have a distutils bug.

1.0 (2009-06-29)

  • Created grokcore.site by factoring local site based components, grokkers and directives out of Grok.

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

grokcore_site-5.1.tar.gz (21.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

grokcore_site-5.1-py3-none-any.whl (26.5 kB view details)

Uploaded Python 3

File details

Details for the file grokcore_site-5.1.tar.gz.

File metadata

  • Download URL: grokcore_site-5.1.tar.gz
  • Upload date:
  • Size: 21.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for grokcore_site-5.1.tar.gz
Algorithm Hash digest
SHA256 78700b330edae3f54c857e9c4714a3c288462361cee057872fba2a269b28b96a
MD5 7e29b49be5425fd2fc54b7a26d559fc2
BLAKE2b-256 b826fff0caa24ab1888482e001daf3baf24ca3652f40a058593325d4635f6c99

See more details on using hashes here.

File details

Details for the file grokcore_site-5.1-py3-none-any.whl.

File metadata

  • Download URL: grokcore_site-5.1-py3-none-any.whl
  • Upload date:
  • Size: 26.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for grokcore_site-5.1-py3-none-any.whl
Algorithm Hash digest
SHA256 99bd14521aad65e8864478e11b4e7ac37cb25f75f07eb9d3de433f41816f92f4
MD5 4139793006bc71fcf406476ffa45bcd2
BLAKE2b-256 53e1f82bf60798dd18a0f110d55648760fbee4835219e8dfcad755bdfac94823

See more details on using hashes here.

Supported by

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