• R objects were added. Many other types of rule classes are now deprecated.

  • Breaking change: Relation and ManyRelation no longer require the model class on the other side of the relation to be passed in as an argument.

  • Breaking change: ManyRelation removes the attr argument, requiring only query_attr.

  • Breaking change: Django versions older than 2.2 are no longer supported.


Add In permission class, and two predefined rule instances, current_user and in_current_groups.


  • Minor Django REST Framework-related fixes.


  • Added initial support for Django REST Framework.

  • Documentation improvements.


  • Renamed predicates to rules, because the latter is a more accessible term that describe the concept just as well. Besides, “permissions are made up of rules” sounds a lot better than “permissions are made up of predicates”.

  • Renamed ambient predicates to blanket rules, because it’s a more descriptive name. Note that the @ambient decorator is now called @blanket_rule, because having a @blanket decorator would be weird.


  • Renamed bridgekeeper.registry.registry to bridgekeeper.perms.

  • Renamed bridgekeeper.predicates.Predicate.apply() to check()

  • Changed bridgekeeper.predicates.Predicate.filter() so that it takes the user object as the first argument, for consistency with the rest of the library (i.e. it’s singnature went from filter(queryset, user) to filter(user, queryset)).