Skip to content
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
8 changes: 4 additions & 4 deletions .editorconfig
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
# Generated from:
# https://github.com/zopefoundation/meta/tree/master/config/pure-python
# Generated with zope.meta (https://zopemeta.readthedocs.io/) from:
# https://github.com/zopefoundation/meta/tree/master/src/zope/meta/pure-python
#
# EditorConfig Configuration file, for more details see:
# http://EditorConfig.org
# https://EditorConfig.org
# EditorConfig is a convention description, that could be interpreted
# by multiple editors to enforce common coding conventions for specific
# file types
Expand All @@ -12,7 +12,7 @@
root = true


[*] # For All Files
[*]
# Unix-style newlines with a newline ending every file
end_of_line = lf
insert_final_newline = true
Expand Down
10 changes: 5 additions & 5 deletions .github/workflows/pre-commit.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# Generated from:
# https://github.com/zopefoundation/meta/tree/master/config/pure-python
# Generated with zope.meta (https://zopemeta.readthedocs.io/) from:
# https://github.com/zopefoundation/meta/tree/master/src/zope/meta/pure-python
name: pre-commit

on:
Expand All @@ -21,10 +21,10 @@ jobs:
name: linting
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
- uses: actions/checkout@v6
- uses: actions/setup-python@v6
with:
python-version: 3.x
python-version: '3.13'
- uses: pre-commit/action@2c7b3805fd2a0fd8c1884dcaebf91fc102a13ecd #v3.0.1
with:
extra_args: --all-files --show-diff-on-failure
Expand Down
19 changes: 8 additions & 11 deletions .github/workflows/tests.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# Generated from:
# https://github.com/zopefoundation/meta/tree/master/config/pure-python
# Generated with zope.meta (https://zopemeta.readthedocs.io/) from:
# https://github.com/zopefoundation/meta/tree/master/src/zope/meta/pure-python
name: tests

on:
Expand All @@ -24,36 +24,33 @@ jobs:
config:
# [Python version, tox env]
- ["3.11", "release-check"]
- ["3.9", "py39"]
- ["3.10", "py310"]
- ["3.11", "py311"]
- ["3.12", "py312"]
- ["3.13", "py313"]
- ["pypy-3.10", "pypy3"]
- ["3.14", "py314"]
- ["pypy-3.11", "pypy3"]
- ["3.11", "coverage"]

runs-on: ${{ matrix.os[1] }}
if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name != github.event.pull_request.base.repo.full_name
name: ${{ matrix.config[1] }}
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v6
with:
persist-credentials: false
- name: Install uv + caching
uses: astral-sh/setup-uv@v6
# astral/setup-uv@7.3.0
uses: astral-sh/setup-uv@eac588ad8def6316056a12d4907a9d4d84ff7a3b
with:
enable-cache: true
cache-dependency-glob: |
setup.*
tox.ini
python-version: ${{ matrix.matrix.config[0] }}
python-version: ${{ matrix.config[0] }}
github-token: ${{ secrets.GITHUB_TOKEN }}
- name: Test
if: ${{ !startsWith(runner.os, 'Mac') }}
run: uvx --with tox-uv tox -e ${{ matrix.config[1] }}
- name: Test (macOS)
if: ${{ startsWith(runner.os, 'Mac') }}
run: uvx --with tox-uv tox -e ${{ matrix.config[1] }}-universal2
- name: Coverage
if: matrix.config[1] == 'coverage'
run: |
Expand Down
4 changes: 2 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# Generated from:
# https://github.com/zopefoundation/meta/tree/master/config/pure-python
# Generated with zope.meta (https://zopemeta.readthedocs.io/) from:
# https://github.com/zopefoundation/meta/tree/master/src/zope/meta/pure-python
*.dll
*.egg-info/
*.profraw
Expand Down
6 changes: 3 additions & 3 deletions .meta.toml
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
# Generated from:
# https://github.com/zopefoundation/meta/tree/master/config/pure-python
# Generated with zope.meta (https://zopemeta.readthedocs.io/) from:
# https://github.com/zopefoundation/meta/tree/master/src/zope/meta/pure-python
[meta]
template = "pure-python"
commit-id = "7d59ab0f"
commit-id = "5a7f2bc0"

[python]
with-pypy = true
Expand Down
12 changes: 6 additions & 6 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
# Generated from:
# https://github.com/zopefoundation/meta/tree/master/config/pure-python
# Generated with zope.meta (https://zopemeta.readthedocs.io/) from:
# https://github.com/zopefoundation/meta/tree/master/src/zope/meta/pure-python
minimum_pre_commit_version: '3.6'
repos:
- repo: https://github.com/pycqa/isort
rev: "6.0.1"
rev: "7.0.0"
hooks:
- id: isort
- repo: https://github.com/hhatto/autopep8
Expand All @@ -12,16 +12,16 @@ repos:
- id: autopep8
args: [--in-place, --aggressive, --aggressive]
- repo: https://github.com/asottile/pyupgrade
rev: v3.19.1
rev: v3.21.2
hooks:
- id: pyupgrade
args: [--py39-plus]
args: [--py310-plus]
- repo: https://github.com/isidentical/teyit
rev: 0.4.3
hooks:
- id: teyit
- repo: https://github.com/PyCQA/flake8
rev: "7.2.0"
rev: "7.3.0"
hooks:
- id: flake8
additional_dependencies:
Expand Down
6 changes: 5 additions & 1 deletion CHANGES.rst
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,11 @@ Changes
5.1 (unreleased)
----------------

- Nothing changed yet.
- 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)
Expand Down
4 changes: 2 additions & 2 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<!--
Generated from:
https://github.com/zopefoundation/meta/tree/master/config/pure-python
Generated with zope.meta (https://zopemeta.readthedocs.io/) from:
https://github.com/zopefoundation/meta/tree/master/src/zope/meta/pure-python
-->
# Contributing to zopefoundation projects

Expand Down
4 changes: 2 additions & 2 deletions MANIFEST.in
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# Generated from:
# https://github.com/zopefoundation/meta/tree/master/config/pure-python
# Generated with zope.meta (https://zopemeta.readthedocs.io/) from:
# https://github.com/zopefoundation/meta/tree/master/src/zope/meta/pure-python
include *.md
include *.rst
include *.txt
Expand Down
63 changes: 59 additions & 4 deletions pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,13 +1,64 @@
# Generated from:
# https://github.com/zopefoundation/meta/tree/master/config/pure-python

# Generated with zope.meta (https://zopemeta.readthedocs.io/) from:
# https://github.com/zopefoundation/meta/tree/master/src/zope/meta/pure-python
[build-system]
requires = [
"setuptools == 78.1.1",
"setuptools >= 78.1.1,< 81",
"wheel",
]
build-backend = "setuptools.build_meta"


[project]
name = "grokcore.security"
version = "5.1.dev0"
description = "Grok-like configuration for Zope security components"
license = "ZPL-2.1"
classifiers = [
"Intended Audience :: Developers",
"Development Status :: 6 - Mature",
"Operating System :: OS Independent",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"Programming Language :: Python :: 3.14",
"Programming Language :: Python :: Implementation :: CPython",
"Programming Language :: Python :: Implementation :: PyPy",
]
dynamic = ["readme"]
requires-python = ">=3.10"
authors = [
{name = "Grok Team",email = "zope-dev@zope.dev"},
]
maintainers = [
{name = "Plone Foundation and contributors",email = "zope-dev@zope.dev"},
]
dependencies = [
"Chameleon >= 2",
"grokcore.component >= 2.1",
"martian >= 0.13",
"zope.component",
"zope.dottedname",
"zope.interface",
"zope.security",
]

[project.optional-dependencies]
role = ["zope.securitypolicy"]
test = [
"grokcore.view[test]",
"zope.app.wsgi",
"zope.configuration",
"zope.securitypolicy",
"zope.testing",
]

[project.urls]
Source = "https://github.com/zopefoundation/grokcore.security"
Issues = "https://github.com/zopefoundation/grokcore.security/issues"
Changelog = "https://raw.githubusercontent.com/zopefoundation/grokcore.security/master/CHANGES.rst"

[tool.coverage.run]
branch = true
source = ["grokcore.security"]
Expand All @@ -30,3 +81,7 @@ exclude_lines = [

[tool.coverage.html]
directory = "parts/htmlcov"

[tool.setuptools.dynamic]
readme = {file = ["README.rst", "CHANGES.rst"]}

4 changes: 2 additions & 2 deletions setup.cfg
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# Generated from:
# https://github.com/zopefoundation/meta/tree/master/config/pure-python
# Generated with zope.meta (https://zopemeta.readthedocs.io/) from:
# https://github.com/zopefoundation/meta/tree/master/src/zope/meta/pure-python

[flake8]
doctests = 1
Expand Down
66 changes: 2 additions & 64 deletions setup.py
Original file line number Diff line number Diff line change
@@ -1,67 +1,5 @@
import os

from setuptools import setup


def read(*rnames):
return open(os.path.join(os.path.dirname(__file__), *rnames)).read()


long_description = (
read('README.rst')
+ '\n' +
read('CHANGES.rst')
)

tests_require = [
'grokcore.view[test]',
'zope.app.wsgi',
'zope.configuration',
'zope.securitypolicy',
'zope.testing',
]

setup(
name='grokcore.security',
version='5.1.dev0',
author='Grok Team',
author_email='zope-dev@zope.dev',
url='https://github.com/zopefoundation/grokcore.security',
description='Grok-like configuration for Zope security components',
long_description=long_description,
license='ZPL',
classifiers=[
'Intended Audience :: Developers',
'Development Status :: 6 - Mature',
'License :: OSI Approved :: Zope Public License',
'Operating System :: OS Independent',
'Programming Language :: Python :: 3',
'Programming Language :: Python :: 3.9',
'Programming Language :: Python :: 3.10',
'Programming Language :: Python :: 3.11',
'Programming Language :: Python :: 3.12',
'Programming Language :: Python :: 3.13',
'Programming Language :: Python :: Implementation :: CPython',
'Programming Language :: Python :: Implementation :: PyPy',
],
include_package_data=True,
zip_safe=False,
python_requires='>=3.9',
install_requires=[
'Chameleon >= 2',
'grokcore.component >= 2.1',
'martian >= 0.13',
'setuptools',
'zope.component',
'zope.dottedname',
'zope.interface',
'zope.security',
],
tests_require=tests_require,
extras_require={
'role': [
'zope.securitypolicy',
],
'test': tests_require
},
)
# See pyproject.toml for package metadata
setup()
9 changes: 6 additions & 3 deletions src/grokcore/security/tests/test_base.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
import doctest
import importlib.resources
import unittest

from pkg_resources import resource_listdir

from zope.testing import cleanup


Expand All @@ -12,7 +11,11 @@ def cleanUpZope(test):

def suiteFromPackage(name):
layer_dir = 'base'
files = resource_listdir(__name__, f'{layer_dir}/{name}')
package = __package__
resource_path = f'{layer_dir}/{name}'
files = []
files = [entry.name for entry in importlib.resources.files(
package).joinpath(resource_path).iterdir() if entry.is_file()]
suite = unittest.TestSuite()
for filename in files:
if not filename.endswith('.py'):
Expand Down
9 changes: 6 additions & 3 deletions src/grokcore/security/tests/test_functional.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
import doctest
import importlib.resources
import unittest

from pkg_resources import resource_listdir

import zope.app.wsgi.testlayer
import zope.testbrowser.wsgi
from zope.app.wsgi.testlayer import http
Expand All @@ -21,7 +20,11 @@ class Layer(

def suiteFromPackage(name):
layer_dir = 'functional'
files = resource_listdir(__name__, f'{layer_dir}/{name}')
package = __package__
resource_path = f'{layer_dir}/{name}'
files = []
files = [entry.name for entry in importlib.resources.files(
package).joinpath(resource_path).iterdir() if entry.is_file()]
suite = unittest.TestSuite()
for filename in files:
if not filename.endswith('.py'):
Expand Down
Loading
Loading