summaryrefslogtreecommitdiff
path: root/CHANGES.txt
AgeCommit message (Collapse)Author
2013-06-11- ``pyramid.testing.DummyResource`` didn't define ``__bool__``, so code underChris McDonough
Python 3 would use ``__len__`` to find truthiness; this usually caused an instance of DummyResource to be "falsy" instead of "truthy". See https://github.com/Pylons/pyramid/pull/1032 Closes #1032
2013-06-05add changelog noteChris McDonough
2013-05-21this is actually a bugfixChris McDonough
2013-05-21Merge branch 'feature-pep302'Chris McDonough
2013-05-21tortured docsChris McDonough
2013-05-21Prevent non-3.2-compatible MarkupSafe 0.16 from breaking us.Tres Seaver
Apps which actually use Mako templates are still broken.
2013-05-09Implement PEP302 API in PackageOverrides as '__loader__'.Tres Seaver
Proxy to the '__loader__' set by the importer, if present. Otherwise, raise NotImplementedError.
2013-04-24update changes.txtMichael Merickel
2013-04-19update changes.txtMichael Merickel
2013-04-03update changelogMichael Merickel
2013-04-01update changelogMichael Merickel
2013-03-20update CHANGES.txtMichael Merickel
2013-03-19Fix whitespace in CHANGES.txt to permit build.Steve Piercy
Add "Before You Begin" section.
2013-03-19update CHANGES.txtMichael Merickel
2013-03-19Merge branch 'fix.798' of wosc/pyramid into pull.922Michael Merickel
2013-03-19Fixes #798: Allow a protocol-relative URL to be passed to add_static_view, ↵Wolfgang Schnerring
generate URLs using the current protocol.
2013-03-19Merge branch 'master' of latteier/pyramid into pull.786Michael Merickel
2013-03-18support acl as a callableMichael Merickel
2013-03-12Merge pull request #896 from tshepang/consistencyMichael Merickel
consistency fixes
2013-03-09consistencyTshepang Lekhonkhobe
2013-03-05update some links and fix othersTshepang Lekhonkhobe
2013-01-10Change log note.Amos Latteier
2013-01-02eliminate other repeated wordsTshepang Lekhonkhobe
2013-01-01eliminate repeated "the" wordsTshepang Lekhonkhobe
2012-12-18prep for 1.4Chris McDonough
2012-12-18gardenChris McDonough
2012-12-10prep for 1.4b3Chris McDonough
2012-12-10prep for 1.4b2Chris McDonough
2012-12-06add changenoteChris McDonough
2012-12-06_depth argument to view_config is now relative to view_configMichael Merickel
This hides an implementation detail that view_config is at least 1 level away from user code.
2012-11-21prep for 1.4b1Chris McDonough
2012-11-21gardenChris McDonough
2012-11-21gardenChris McDonough
2012-11-21- In order to normalize the relationship between event subscribers andChris McDonough
subscriber predicates, we now allow both subscribers and subscriber predicates to accept only a single ``event`` argument even if they've been subscribed for notifications that involve multiple interfaces. Subscribers and subscriber predicates that accept only one argument will receive the first object passed to ``notify``; this is typically (but not always) the event object. The other objects involved in the subscription lookup will be discarded. For instance, if an event is sent by code like this:: registry.notify(event, context) In the past, in order to catch such an event, you were obligated to write and register an event subscriber that mentioned both the event and the context in its argument list:: @subscriber([SomeEvent, SomeContextType]) def subscriber(event, context): pass With the event-only feature you can now write an event subscriber that accepts only ``event`` even if it subscribes to multiple interfaces:: @subscriber([SomeEvent, SomeContextType]) def subscriber(event): # this will work! Note, however, that if the event object is not the first object in the call to ``notify``, you'll run into trouble. For example, if notify is called with the context argument first:: registry.notify(context, event) You won't be able to take advantage of the feature. It will "work", but the object received by your event handler won't be the event object, it will be the context object, which won't be very useful:: @subscriber([SomeContextType, SomeEvent]) def subscriber(event): # bzzt! you'll be getting the context here as ``event``, and it'll # be useless Existing multiple-argument subscribers continue to work without issue, so you should continue use those if your system notifies using multiple interfaces and the first interface is not the event interface. For example:: @subscriber([SomeContextType, SomeEvent]) def subscriber(context, event): # this will still work! The event-only feature makes it possible to use a subscriber predicate that accepts only a request argument within both multiple-interface subscriber registrations and single-interface subscriber registrations. In the past, if you had a subscriber predicate like this:: class RequestPathStartsWith(object): def __init__(self, val, config): self.val = val def text(self): return 'path_startswith = %s' % (self.val,) phash = text def __call__(self, event): return event.request.path.startswith(self.val) If you attempted to use the above predicate to condition a subscription that involved multiple interfaces, it would not work. You had to change it to accept the same arguments as the subscription itself. For example, you might have had to change its ``__call__`` method like so, adding a ``context`` argument:: def __call__(self, event, context): return event.request.path.startswith(self.val) With the event-only feature, you needn't make the change. Instead, you can write all predicates so they only accept ``event`` in their ``__call__`` and they'll be useful across all registrations for subscriptions that use an event as their first argument, even ones which accept more than just ``event``. However, the same caveat applies to predicates as to subscriptions: if you're subscribing to a multi-interface event, and the first interface is not the event interface, the predicate won't work properly. In such a case, you'll need to match the predicate ``__call__`` argument ordering and composition to the ordering of the interfaces. For example:: def __call__(self, context, event): return event.request.path.startswith(self.val) tl;dr: 1) Always use the event as the first argument to a multi-interface subscription and 2) Use only ``event`` in your subscriber and subscriber predicate parameter lists, no matter how many interfaces the subscriber is notified with, as long as the event object is the first argument passed to ``registry.notify``. This will result in the maximum amount of reusability of subscriber predicates.
2012-11-20gardenChris McDonough
2012-11-20gardenChris McDonough
2012-11-20gardenChris McDonough
2012-11-20- Small microspeed enhancement which anticipates that aChris McDonough
``pyramid.response.Response`` object is likely to be returned from a view. Some code is shortcut if the class of the object returned by a view is this class. A similar microoptimization was done to ``pyramid.request.Request.is_response``.
2012-11-18- A failure when trying to locate the attribute ``__text__`` on route and viewChris McDonough
predicates existed when the ``debug_routematch`` setting was true or when the ``pviews`` command was used. See https://github.com/Pylons/pyramid/pull/727 Closes #727.
2012-11-14prep for releaseChris McDonough
2012-11-14rearrange deck chairsChris McDonough
2012-11-13updated changelogMichael Merickel
2012-11-12removed doc-update from changelogMichael Merickel
2012-11-12Added changes to the CHANGES log.Robert Jackiewicz
2012-11-11Merge branch 'master' of github.com:Pylons/pyramidChris McDonough
2012-11-11- Be more tolerant of potential error conditions in ``match_param`` andChris McDonough
``physical_path`` predicate implementations; instead of raising an exception, return False.
2012-11-04update changelog, close #627Michael Merickel
2012-11-04- Allow a ``_depth`` argument to ``pyramid.view.view_config``, which willChris McDonough
permit limited compisition reuse of the decorator by other software that wants to provide custom decorators that are much like view_config. Closes #637.
2012-11-04emit a warning if a user is using the default hashalg to AuthTktMichael Merickel
2012-11-04Merge branch 'master' into fix.695Michael Merickel