Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Drop support for grok < 5. #7

Merged
merged 1 commit into from
Jan 23, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions CHANGES.rst
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,9 @@ Changelog of megrok.strictrequire

- Drop support for Python 2.7, 3.4, 3.5, 3.6.

- Drop support for ``grok < 5``, thus dropping support for JSON, REST and
XMLRPC.

- Add support for Python 3.7, 3.8, 3.9, 3.10, 3.11.


Expand Down
2 changes: 1 addition & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@
install_requires=[
'setuptools',
'martian',
'grok >= 3.0',
'grok >= 5.0a1',
],
extras_require={
'test': tests_require
Expand Down
21 changes: 0 additions & 21 deletions src/megrok/strictrequire/meta.py
Original file line number Diff line number Diff line change
Expand Up @@ -58,24 +58,3 @@ class CheckRequireGrokkerAddForm(CheckRequireGrokker):
class CheckRequireGrokkerEditForm(CheckRequireGrokker):
"""Ensure every grok.EditForm has a grok.require directive"""
martian.component(grok.EditForm)


class CheckRequireRESTGrokker(martian.MethodGrokker):
"""Ensure every grok.REST has a grok.require directive"""
martian.component(grok.REST)
martian.directive(grok.require, default=_require_marker)

def execute(self, factory, method, config, require, **kw):
if require is _require_marker:
raise SecurityError(
'megrok.strictrequire requires %r to use the grok.require '
'directive on the method: %s!' % (factory, method), factory)
return True


class CheckRequireXMLPRCGrokker(CheckRequireRESTGrokker):
martian.component(grok.XMLRPC)


class CheckRequireJSONGrokker(CheckRequireRESTGrokker):
martian.component(grok.JSON)
33 changes: 2 additions & 31 deletions src/megrok/strictrequire/tests/checkrequire.rst
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,7 @@ Ditto for grok.Form, grok.AddForm. grok.EditForm, grok.XMLRPC, grok.JSON,
grok.REST components::

>>> from megrok.strictrequire.tests.fixtures import (
... NoRequireForm, NoRequireAddForm, NoRequireEditForm,
... NoRequireXMLRPC, NoRequireREST, NoRequireJSON)
... NoRequireForm, NoRequireAddForm, NoRequireEditForm)
>>> grok_component('NoRequireForm', NoRequireForm)
Traceback (most recent call last):
...
Expand All @@ -47,28 +46,12 @@ grok.REST components::
...
megrok.strictrequire.meta.SecurityError: megrok.strictrequire requires <class 'megrok.strictrequire.tests.fixtures.NoRequireEditForm'> to use the grok.require directive!

>>> grok_component('NoRequireXMLRPC', NoRequireXMLRPC)
Traceback (most recent call last):
...
megrok.strictrequire.meta.SecurityError: megrok.strictrequire requires <class 'megrok.strictrequire.tests.fixtures.NoRequireXMLRPC'> to use the grok.require directive on the method:...NoRequireXMLRPC.foobar...

>>> grok_component('NoRequireREST', NoRequireREST)
Traceback (most recent call last):
...
megrok.strictrequire.meta.SecurityError: megrok.strictrequire requires <class 'megrok.strictrequire.tests.fixtures.NoRequireREST'> to use the grok.require directive on the method:...NoRequireREST.foobar...

>>> grok_component('NoRequireJSON', NoRequireJSON)
Traceback (most recent call last):
...
megrok.strictrequire.meta.SecurityError: megrok.strictrequire requires <class 'megrok.strictrequire.tests.fixtures.NoRequireJSON'> to use the grok.require directive on the method:...NoRequireJSON.foobar...

Of course, when the grok.require directive *is* used, there should not be any
exception raised::

>>> from megrok.strictrequire.tests.fixtures import (
... RequireView, RequirePage, RequireForm, RequireAddForm,
... RequireEditForm, RequireXMLRPC, RequireREST, RequireJSON,
... RequireOnMethodXMLRPC, RequireOnMethodREST, RequireOnMethodJSON)
... RequireEditForm)
>>> grok_component('RequireView', RequireView)
True
>>> grok_component('RequirePage', RequirePage)
Expand All @@ -79,17 +62,5 @@ exception raised::
True
>>> grok_component('RequireEditForm', RequireEditForm)
True
>>> grok_component('RequireXMLRPC', RequireXMLRPC)
True
>>> grok_component('RequireREST', RequireREST)
True
>>> grok_component('RequireJSON', RequireJSON)
True
>>> grok_component('RequireOnMethodXMLRPC', RequireOnMethodXMLRPC)
True
>>> grok_component('RequireOnMethodREST', RequireOnMethodREST)
True
>>> grok_component('RequireOnMethodJSON', RequireOnMethodJSON)
True

"""
69 changes: 0 additions & 69 deletions src/megrok/strictrequire/tests/fixtures.py
Original file line number Diff line number Diff line change
Expand Up @@ -56,27 +56,6 @@ class NoRequireEditForm(grok.EditForm):
grok.context(zope.interface.Interface)


class NoRequireXMLRPC(grok.XMLRPC):
grok.context(zope.interface.Interface)

def foobar(self):
pass


class NoRequireREST(grok.REST):
grok.context(zope.interface.Interface)

def foobar(self):
pass


class NoRequireJSON(grok.JSON):
grok.context(zope.interface.Interface)

def foobar(self):
pass


class RequireView(grok.View):
grok.context(zope.interface.Interface)
grok.require('zope.Public')
Expand Down Expand Up @@ -106,51 +85,3 @@ class RequireAddForm(grok.AddForm):
class RequireEditForm(grok.EditForm):
grok.context(zope.interface.Interface)
grok.require('zope.Public')


class RequireXMLRPC(grok.XMLRPC):
grok.context(zope.interface.Interface)
grok.require('zope.Public')

def foobar(self):
pass


class RequireREST(grok.REST):
grok.context(zope.interface.Interface)
grok.require('zope.Public')

def foobar(self):
pass


class RequireJSON(grok.JSON):
grok.context(zope.interface.Interface)
grok.require('zope.Public')

def foobar(self):
pass


class RequireOnMethodXMLRPC(grok.XMLRPC):
grok.context(zope.interface.Interface)

@grok.require('zope.Public')
def foobar(self):
pass


class RequireOnMethodREST(grok.REST):
grok.context(zope.interface.Interface)

@grok.require('zope.Public')
def foobar(self):
pass


class RequireOnMethodJSON(grok.JSON):
grok.context(zope.interface.Interface)

@grok.require('zope.Public')
def foobar(self):
pass