* Use fastuuid on CPython>=3.5.
* Only install fastuuid on Linux.
* For some reason we're stillgetting the thrusty build env.
Specify xenial explictly.
* Specify Python versions for lint stages.
* Ensure pycurl deps are installed.
* Run update before.
* Upgrade tox and dependencies.
* Happify docstyle.
The build from Celery is broken because one test tries to enable all serializers by calling `disable_insecure_serializers(allowed=None)``, but because `None` is the default value, the function fallback to the default behaviour.
Use a sentinel value as default instead of `None` should fix this.
* Add events field on memory channel
Part of https://github.com/celery/kombu/issues/1050, with this fix
the function does not raise the exception.
The init `defaultdict(set)` is the same init from amqp lib.
* Add unit test
* Add more detail test
* FIx flake8
* Add `_lookup_direct` method to virtual channel. (#994)
Add possibility to optimize lookup for queue in direct
exchange set.
* Add `_lookup_direct` method to redis virtual channel. (#994)
Use `SISMEMBER` instead of `SMEMBERS` command to check if queue
exists in a set. Time complexity is increased from O(N) to O(1)
where N is the set cardinality.
This is a follow-up to ddba8aeaf0. Prior to that commit,
"implements" was missing entirely for qpid. The earlier commit
added it, but only declared that the transport was async-capable.
Turns out it's important also to declare the supported exchange
types. In particular, if the transport doesn't declare support
for the 'fanout' exchange type, pidbox wouldn't be used[1] and so
it would still not be possible to revoke a task with terminate=True
when using the qpid transport.
[1] https://github.com/celery/celery/commit/2f58c35340f648
qpid transport supports an async interface, but this wasn't declared
properly. It was missing an appropriate 'implements' class property.
This seems to have been missed because:
- kombu 4.x was branched from 3.0.21
- qpid transport was originally added after that in 3.0.24
- Transport.implements was added in commit 6a1abb7e9 on the 4.x branch
only, before the qpid transport was in that branch
- qpid transport code was then copied between 3.x and 4.x branches but
addition of Transport.implements was missed.
* Added pattern/matcher to Mailbox
* pattern/match for kombu 4
* Ensure kombu.matcher is covered by our documentation.
* Adds test_matcher & pidbox unit tests.
* Added tests to ensure exception is raised when matcher is not registered.
* Adds to test for destination passed in to process.
* fixed rediss url parsing
* added ssl parameter test
* added ssl parameter test
* added ssl parameter test
* added ssl parameter test
* added ssl parameter test
* added no ssl module parse_url test
* added no ssl module parse_url test
* added no ssl module parse_url test
* convert to list comprehension
* simulate no ssl in test
* add missing logger
The problem is that `self.connection.client.alt` is only populated when
there's more than one client URL provided, e.g.
`"sentinel://foo;sentinel://bar"`. It will also always contain all URLs,
including the primary/first entry.
So if the `alt` list is empty, it (usually) means there was only one
client URL provided.
I also took the liberty to perform name and type changes to be more in
line with the examples and documentation in the `redis` library. The
argument is `sentinels`, not `connection_list`. And it's of the type
`List[Tuple[str, int]]`, not `List[List[str, str]]`.
Fixes#1004