| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
| |
Instead, use the intended METH_KEYWORDS | METH_VARARGS spelling.
Fixes #71
|
| |\
| |
| | |
Document API for adapter registry.
|
| | |
| |
| |
| | |
Closes: #41.
|
| |/
|
|
|
|
| |
Closes #23.
[ci skip]
|
| |\
| |
| |
| |
| |
| |
| | |
Conflicts:
CHANGES.rst
I think that was the simplest conflict resolution ever :-]
|
| | | |
|
| | |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
- The bare import of '_zope_c_optimizations' prevented them from being
used.
- After enabling them via absolute imports, they would fail due to
http://bugs.python.org/issue15657.
Fixes #60.
|
| |/ |
|
| | |
|
| |
|
|
|
| |
* Support Components subclasses that are not hashable.
Fixes #53.
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Fixes #46.
Benchmarks show a dramatic improvement; not quite as good as the
demonstration in #46 because the implementation had to be a bit more
complex to properly handle unregistration, but still very good. Here it
is with 20,000 items already registered:
```
%time add_to_reg(reg, 1000)
CPU times: user 190 ms, sys: 19.3 ms, total: 209 ms
Wall time: 203 ms
```
Here's a profile with about 100,000 utilities registered:
```
%prun add_to_reg(reg, 1000)
80005 function calls (79005 primitive calls) in 0.713 seconds
Ordered by: internal time
ncalls tottime percall cumtime percall filename:lineno(function)
1000 0.596 0.001 0.621 0.001 adapter.py:202(subscribe)
12000 0.016 0.000 0.019 0.000 interface.py:518(__hash__)
1000 0.010 0.000 0.709 0.001 registry.py:206(registerUtility)
3000/2000 0.009 0.000 0.014 0.000 interface.py:255(interfaces)
2000 0.008 0.000 0.022 0.000 adapter.py:637(changed)
1000 0.008 0.000 0.025 0.000 registry.py:498(_getUtilityProvided)
9000 0.008 0.000 0.017 0.000 {method 'get' of 'dict' objects}
1000 0.008 0.000 0.027 0.000 adapter.py:102(register)
2000 0.006 0.000 0.008 0.000 adapter.py:450(changed)
1000 0.005 0.000 0.663 0.001 registry.py:145(registerUtility)
```
I was very careful not to change the pickle at all.
zope.interface and zope.component tests have been run and both pass. (It
was necessary to account for the underlying objects changing because of
the way zope.component cleans up after tests.)
|
| |
|
|
| |
Fixes #42
|
| |
|
|
|
|
| |
Since we no longer support 3.2 we can use the literal syntax.
This was done with a quick sed script.
|
| |
|
| |
Commit https://github.com/zopefoundation/zope.interface/commit/bc3b946593fa204b1969d8785b58418adaa19c80 duplicated some lines on branch merge.
|
| | |
|
| |
|
|
|
|
| |
We exclude interfaces declared with the 'class' statement, because their
methods typically have only a doctstring in the suite, which confuses
the branch coverage machinery.
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
| |
- To keep code clean, functionality is implemented in asStructuredText
with an added flag rst with default value False to preserve behaviour.
|
| |\ |
|
| | | |
|
| | | |
|
| |/
|
|
|
|
|
| |
With the previous version of the code, function signatures etc. get inserted as plain text. A common python construct ``f(**kw)`` thus generates error since structured text thinks this is the start of **bold** text, but then complains because the start tag ``**`` is never closed.
The solution here is to place all code in double hash tags so it is formatted verbatim without interpreting characters as inline markup.
(Technically, this might only be supported by reStructuredText, but since this is the standard for python documentation, that is probably fine.
|
| | |
|
| |
|
|
|
|
|
| |
The decorator specifies the component name, so it does not have to be
passed in during registration. This in turn allows developers to define
component names once globally and use it everywhere, especially when
using ZCML where the name had to be specified a second time.
|
| |
|
|
|
| |
This bug was a reason (?) for a gratuitous fork of the _verify
function in z3c.testing.verify.
|
| |
|
|
| |
loop body modified a weakref dict causing a ``RuntimeError`` error
|
| |
|
|
|
| |
in Python 3.3.
|
| | |
|
| |
|
|
|
|
|
| |
These APIs are still deprecated under Python 2.x, and still raise an
exception under Python 3.x, but no longer cause a warning to be emitted
under Python 2.x.
|
| | |
|
| |
|
|
|
| |
'__code__', '__defaults__', '__func__', and '__self__' all work fine on
Python 2.6+.
|
| |
|
|
|
|
|
|
|
| |
Code which uses the deprecated APIs will not work as expected under Py3k.
Instead of ``implements``, ``implementsOnly``, or ``classProvides``,
prefer the equivalent class decorators: ``@implementer``,
``@implementer_only``, and ``@provider``.
|
| | |
|
| | |
|
| |
|
|
|
| |
We *can't* test the classAdvice stuff under Py3k. Need to deprecate it
before the 4.0 release.
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|