summaryrefslogtreecommitdiff
path: root/src
Commit message (Collapse)AuthorAgeFilesLines
* Use PEP 3114 __next__ methodsColin Watson2023-02-284-10/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | I got very confused recently when I had a security-proxied iterator using this sort of pattern: class Foo: def __iter__(self): return self def __next__(self): ... The value returned from `__iter__` is wrapped in a security proxy, and I found that unless I used `PURE_PYTHON=1` I got a `ForbiddenAttribute` exception trying to get the Python-2-style `next` method. This probably ought to have been noticed and fixed before we dropped support for Python 2, in which case a transition period of supporting both method names would have made sense. Now that we only support Python 3, I expect that any proxied objects that actually work as iterators will have a `__next__` method (and perhaps a vestigial `next` alias for compatibility), so I think we can just jump straight to only supporting `__next__` for both the C case and the pure-Python case. The C case is not actually being tested properly at the moment due to an oversight around the exact handling of the `PURE_PYTHON` environment variable, but fixing that will require coordinated changes to both `zope.security` and `zope.proxy`. I'll deal with that separately.
* - Remove more proxying code for names that no longer exist in Python 3Jens Vagelpohl2023-01-174-34/+9
|
* - Remove proxying code for names that no longer exist in Python 3Jens Vagelpohl2023-01-154-177/+8
|
* Config with c code template 831a34f5 (#91)Michael Howitz2022-12-2331-890/+382
| | | * Drop support for Python 2.7, 3.5, 3.6.
* Configuring for c-codeMarius Gedminas2022-09-121-0/+30
| | | | | | Add a regression test for CFLAGS not having -Ofast, which is known to break things. See https://github.com/zopefoundation/meta/pull/155 for reference.
* Apply isort rulesMichael Howitz2022-04-2231-132/+258
|
* re #83: Remove `unittest.makeSuite` as it is deprecated in Python 3.11+.Steffen Allner2022-04-133-8/+8
|
* Merge pull request #81 from cjwatson/default-method-wrapper-checkerColin Watson2022-03-102-1/+7
|\ | | | | Fix default checker for method-wrapper on Python 3
| * Fix default checker for method-wrapper on Python 3Colin Watson2022-03-102-1/+7
| | | | | | | | | | | | | | | | | | The default checker for `method-wrapper` objects such as `().__repr__` and `{}.__repr__` was previously set by setting the default checker `type(().__getslice__)`, which only worked on Python 2. Use a different exemplar for this type which works on both Python 2 and 3. Fixes #75.
* | Fix a number of typosColin Watson2022-03-102-4/+4
|/
* Fix tests on Python 3.10 + lint.config-with-c-codeMichael Howitz2021-11-232-2/+2
|
* Remove obsolete tests.Michael Howitz2021-11-111-19/+0
| | | | | | | | | | | | | | I renamed the tests (that's why their name ends with `2`) there where methods with the same names around line 1600. The other tests assure that a TypeError is raised when calling `pow(x, y, proxy)` because "a PyProxy cannot lie about its type". Interestingly the deleted tests did not fail on CPython but the tests expecting the TypeError were locally successful, too, but not at GHA – that's strange. I am restoring here the status before my renaming of the tests: The now deleted tests did not run because of the name clash.
* Lint the code.Michael Howitz2021-08-3033-422/+752
| | | | Add support for Python 3.9.
* Ensure all objects have consistent interface resolution orders.Jason Madden2020-03-233-6/+29
| | | | Fixes #71
* Let interfaces be iterated on Python 3Jason Madden2020-02-062-5/+32
| | | | Fixes https://github.com/zopefoundation/zope.interface/issues/141
* Allow iter({}.items()) on PyPy3Marius Gedminas2019-11-111-0/+4
| | | | | | | | Dict item iterators use a special type (builtins.dict_itemiterator) on recent versions of PyPy3. Fixes zope.security.interfaces.ForbiddenAttribute: ('__next__', <dict_itemiterator object at 0x00007f7c9c107320>)
* Decimal checker: __truediv__ was missing, also added tests, did some cleanupadamg-truediv-missingAdam Groszer2019-01-032-10/+59
|
* Fix tests and DeprecationWarnings.Jason Madden2018-10-192-14/+16
| | | | Fixes #55
* Add ``ISystemPrincipal`` and make ``system_user`` a regular object that ↵feature/system-user-regular-objectJason Madden2018-08-204-4/+42
| | | | | | implements it This facilitates adding adapter registrations for the system user.
* Fixes #10: Pure-python proxies don't check __unicode__Jason Madden2018-01-112-6/+58
| | | | | | | | | Just like the C implementation. Note that ``__str__`` is checked for both implementations on both Python 2 and 3, but if there is no ``__unicode__`` method defined, Python 2's automatic fallback to ``__str__`` is **not** checked when ``unicode`` is called. Add tests for these cases.
* Fix default values for Permission's title and description in Py2issue48Jason Madden2017-11-304-11/+38
| | | | | | | | | | And test this. This applies to both the class and the ZCML directive. Also adjust IPermission to use NativeStringLine for ``id``, since that's what ZCML has always been creating (it uses an Id, which subclasses NativeStringLine), and what's typically written in source code. Test that the permissions created from ZCML are valid with this change.
* Consistent capitalization of ID in docstrings and fields (except one case ↵Jason Madden2017-09-157-14/+14
| | | | | | where it was a i18n messageid). TIL that sphinx.ext.doctest has IGNORE_EXCEPTION_DETAIL set by default.
* Document proxy.__class__ troubles with isinstance/issubclassdocsJason Madden2017-09-141-1/+4
| | | | | | | | And suggest workarounds, in a prominent new section about proxy troubles. Link to this from everywhere we talk about proxies. Fixes #26
* Split narr.rst into parts and make the example more correct.Jason Madden2017-09-141-0/+3
| | | | | | It's not doctested so it isn't fully guaranteed to be correct, but it was relying on conpects that don't exist anymore (simpleinteraction, and the ISecurityPolicy having the checkPermission() method).
* Docs for testing.pyJason Madden2017-09-142-4/+26
|
* Cross refs for simplepolicies.pyJason Madden2017-09-141-2/+9
|
* Cross-refs and cleanups for proxy.py/rstJason Madden2017-09-141-1/+11
|
* Cross-refs and cleanups for permission.py/rstJason Madden2017-09-141-8/+20
|
* Doc cross-refs and cleanup for management.rst/pyJason Madden2017-09-141-12/+20
|
* Doc cleanup for decorator.rstJason Madden2017-09-141-0/+2
|
* cross-refs and cleanups for checker and adapter.Jason Madden2017-09-142-48/+128
|
* cross-references and interface cleanups for interfaces.py/rstJason Madden2017-09-141-83/+211
|
* Promote the constant for zope.Public from metaconfigure.py to interfaces.pypublic_permission_constJason Madden2017-09-1311-42/+48
| | | | | | | | | And use it consistently throughout this package. On Python 2, sometimes we were comparing the string with unicode and sometimes with str. Now its consistent. This is a start to addressing #6
* Remove commented code from test_checker.pyJason Madden2017-09-136-99/+85
| | | | | | Also run all remaining tests on all Python versions. Trivial trailing/keyword arg whitespace cleanups.
* Use zope.proxy 4.3.0 so that tests pass on Py3.issue40Jason Madden2017-09-131-9/+1
|
* 100% coverage for testing.pyJason Madden2017-09-124-46/+61
|
* 100% coverage for checker.py. Minor whitespace cleanups.Jason Madden2017-09-121-58/+67
|
* 100% coverage for proxy.pyJason Madden2017-09-122-8/+83
| | | | | | - The implementation of __getattribute__/__getattr__ now behaves like C and will not call a target's version of those functions more than once if they raise an AttributeError.
* Consistently use the correct base for super calls.Jason Madden2017-09-121-26/+26
|
* Coverage for get/setslice, length_hint, and comparison methods in proxy.pyJason Madden2017-09-122-22/+134
|
* 100% coverage for test_location.pyJason Madden2017-09-121-10/+1
| | | | zope.location is a hard test dependency, no need for conditional logic.
* 100% coverage for test_proxy.pyJason Madden2017-09-121-133/+76
| | | | | - Modern assert methods - Unify some py2/py3 tests that just depended on a method name.
* 100% coverage for test_checker.pyJason Madden2017-09-122-261/+276
| | | | | | - Modern assert methods - Whitespace cleanup - A whole test class was being skipped because of a duplicate name.
* 100% coverage for test_adapter.pyJason Madden2017-09-121-145/+83
| | | | | | - Use dict comprehensions - Use moddern self.assertIs - Unify external imports
* 100% for test_permission.pyJason Madden2017-09-121-52/+8
|
* Remove unused and broken zope.security.setup.Jason Madden2017-09-111-20/+0
|
* Remove unused internal files from tests/Jason Madden2017-09-115-162/+5
|
* 100% coverage of test_zcml_functest.pyJason Madden2017-09-111-127/+33
| | | | We have hard test dependencies, we don't need to be conditional.
* Document behaviour of ParanoidSecurityPolicy when there are no participationsissue19Jason Madden2017-09-112-15/+24
| | | | | | Add an explicit test for this case. Fixes #19.
* Merge pull request #37 from zopefoundation/issue35Jason Madden2017-09-112-0/+2
|\ | | | | call PyObject_GC_UnTrack() in tp_dealloc()