Unknown
* Prepare release 0.22.0 ([`db1dcf6`](https://github.com/python-zeroconf/python-zeroconf/commit/db1dcf682e453766b53773d70c0091b81a87a192))
* Add arguments to set TTLs via ServiceInfo ([`ecc021b`](https://github.com/python-zeroconf/python-zeroconf/commit/ecc021b7a3cec863eed5a3f71a1f28e3026c25b0))
* Use recommended TTLs with overrides via ServiceInfo ([`a7aedb5`](https://github.com/python-zeroconf/python-zeroconf/commit/a7aedb58649f557a5e372fc776f98457ce84eb39))
* ttl: modify default used to respond to _services queries ([`f25989d`](https://github.com/python-zeroconf/python-zeroconf/commit/f25989d8cdae8f77e19eba70f236dd8103b33e8f))
* Fix service removal packets not being sent on shutdown ([`57310e1`](https://github.com/python-zeroconf/python-zeroconf/commit/57310e185a4f924dd257edd64f866da685a786c6))
* Adjust query intervals to match RFC 6762 (159)
* Limit query backoff time to one hour as-per rfc6762 section 5.2
* tests: monkey patch backoff limit to focus testing on TTL expiry
* tests: speed up integration test
* tests: add test of query backoff interval and limit
* Set initial query interval to 1 second as-per rfc6762 sec 5.2
* Add comments around timing constants
* tests: fix linting errors
* tests: fix float assignment to integer var
Sets the repeated query backoff limit to one hour as opposed to 20 seconds, reducing unnecessary network traffic
Adds a test for the behaviour of the backoff procedure
Sets the first repeated query to happen after one second as opposed to 500ms ([`bee8abd`](https://github.com/python-zeroconf/python-zeroconf/commit/bee8abdba49e2275d203e3b0b4a3afac330ec4ea))
* Turn on and address mypy check_untyped_defs ([`4218d75`](https://github.com/python-zeroconf/python-zeroconf/commit/4218d757994467ee710b0cad034ea1fb6035d3ea))
* Turn on and address mypy warn-return-any ([`006e614`](https://github.com/python-zeroconf/python-zeroconf/commit/006e614315c12e5232e6168ce0bacf0dc056ba8a))
* Turn on and address mypy no-implicit-optional ([`071c6ed`](https://github.com/python-zeroconf/python-zeroconf/commit/071c6edb924b6bc9b67859dc9860cfe09cc98d07))
* Add reminder to enable disallow_untyped_calls for mypy ([`24bb44f`](https://github.com/python-zeroconf/python-zeroconf/commit/24bb44f858cd325d7ff2892c53dc1dd9f26ed768))
* Enable some more mypy warnings ([`183a846`](https://github.com/python-zeroconf/python-zeroconf/commit/183a84636a9d4fec6306d065a4f855fec95086e4))
* Run mypy on test_zeroconf.py too
This will reveal issues with current type hints as demonstrated by a
commit/issue to be submitted later, as well as prevent some others
from cropping up meanwhile. ([`74391d5`](https://github.com/python-zeroconf/python-zeroconf/commit/74391d5c124bf6f899059db93bbf7e99b96d8aad))
* Move mypy config to setup.cfg
Removes need for a separate file, better to have more in one place. ([`2973931`](https://github.com/python-zeroconf/python-zeroconf/commit/29739319ccf71f48c06bc1b74cd193f17fb6b272))
* Don't bother with a universal wheel as we're Python >= 3 only ([`9c0f1ab`](https://github.com/python-zeroconf/python-zeroconf/commit/9c0f1ab03b90f87ff1d58278a0b9b77c16195185))
* Add unit tests for default ServiceInfo properties. ([`a12c3b2`](https://github.com/python-zeroconf/python-zeroconf/commit/a12c3b2a3b4300849e0a4dcdd4df5386286b88d3))
* Modify ServiceInfo's __init__ properties' default value.
This commit modifies the default value of the argument properties of
ServiceInfo’s __init__() to byte array (properties=b’’). This enables
to instantiate it without setting the properties argument. As it is,
and because properties is not mandatory, if a user does not specify
the argument, an exception (AssertionError) is thrown:
Traceback (most recent call last):
File "src/zeroconf-test.py", line 72, in <module>
zeroconf.register_service(service)
File "/home/jmpcm/zeroconf-test/src/zeroconf.py", line 1864, in register_service
self.send(out)
File "/home/jmpcm/zeroconf-test/src/zeroconf.py", line 2091, in send
packet = out.packet()
File "/home/jmpcm/zeroconf-test/src/zeroconf.py", line 1026, in packet
overrun_answers += self.write_record(answer, time_)
File "/home/jmpcm/zeroconf-test/src/zeroconf.py", line 998, in write_record
record.write(self)
File "/home/jmpcm/zeroconf-test/src/zeroconf.py", line 579, in write
out.write_string(self.text)
File "/home/jmpcm/zeroconf-test/src/zeroconf.py", line 903, in write_string
assert isinstance(value, bytes)
AssertionError
The argument can be either a dictionary or a byte array. The function
_set_properties() will always create a byte array with the user's
properties. Changing the default value to a byte array, avoids the
conversion to byte array and avoids the exception. ([`9321007`](https://github.com/python-zeroconf/python-zeroconf/commit/93210079259bd0973e3b54a90dff971e14abf595))
* Fix some spelling errors ([`88fb0e3`](https://github.com/python-zeroconf/python-zeroconf/commit/88fb0e34f902498f6ceb583ce6fa9346745a14ca))
* Require flake8 >= 3.6.0, drop pycodestyle restriction
Fixes current build breakage related to flake8 dependencies.
The breakage:
$ make flake8
flake8 --max-line-length=110 examples *.py
Traceback (most recent call last):
File "/home/travis/virtualenv/python3.5.6/lib/python3.5/site-packages/pkg_resources/__init__.py", line 2329, in resolve
return functools.reduce(getattr, self.attrs, module)
AttributeError: module 'pycodestyle' has no attribute 'break_after_binary_operator'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/travis/virtualenv/python3.5.6/lib/python3.5/site-packages/flake8/plugins/manager.py", line 182, in load_plugin
self._load(verify_requirements)
File "/home/travis/virtualenv/python3.5.6/lib/python3.5/site-packages/flake8/plugins/manager.py", line 154, in _load
self._plugin = resolve()
File "/home/travis/virtualenv/python3.5.6/lib/python3.5/site-packages/pkg_resources/__init__.py", line 2331, in resolve
raise ImportError(str(exc))
ImportError: module 'pycodestyle' has no attribute 'break_after_binary_operator'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/travis/virtualenv/python3.5.6/bin/flake8", line 11, in <module>
sys.exit(main())
File "/home/travis/virtualenv/python3.5.6/lib/python3.5/site-packages/flake8/main/cli.py", line 16, in main
app.run(argv)
File "/home/travis/virtualenv/python3.5.6/lib/python3.5/site-packages/flake8/main/application.py", line 412, in run
self._run(argv)
File "/home/travis/virtualenv/python3.5.6/lib/python3.5/site-packages/flake8/main/application.py", line 399, in _run
self.initialize(argv)
File "/home/travis/virtualenv/python3.5.6/lib/python3.5/site-packages/flake8/main/application.py", line 381, in initialize
self.find_plugins()
File "/home/travis/virtualenv/python3.5.6/lib/python3.5/site-packages/flake8/main/application.py", line 197, in find_plugins
self.check_plugins.load_plugins()
File "/home/travis/virtualenv/python3.5.6/lib/python3.5/site-packages/flake8/plugins/manager.py", line 434, in load_plugins
plugins = list(self.manager.map(load_plugin))
File "/home/travis/virtualenv/python3.5.6/lib/python3.5/site-packages/flake8/plugins/manager.py", line 319, in map
yield func(self.plugins[name], *args, **kwargs)
File "/home/travis/virtualenv/python3.5.6/lib/python3.5/site-packages/flake8/plugins/manager.py", line 432, in load_plugin
return plugin.load_plugin()
File "/home/travis/virtualenv/python3.5.6/lib/python3.5/site-packages/flake8/plugins/manager.py", line 189, in load_plugin
raise failed_to_load
flake8.exceptions.FailedToLoadPlugin: Flake8 failed to load plugin "pycodestyle.break_after_binary_operator" due to module 'pycodestyle' has no attribute 'break_after_binary_operator'. ([`73b3620`](https://github.com/python-zeroconf/python-zeroconf/commit/73b3620908cb5e2f54231692c17f6bbb8a42d09d))
* Drop flake8-blind-except
Obsoleted by pycodestyle 2.1's E722. ([`e3b7e40`](https://github.com/python-zeroconf/python-zeroconf/commit/e3b7e40af52d05264794e2e4d37dfdb1c5d3814a))
* Test with PyPy 3.5 5.10.1 ([`51a6f70`](https://github.com/python-zeroconf/python-zeroconf/commit/51a6f7081bd5590ca5ea5418b39172714b7ef1fe))
* Fix a changelog typo ([`e08db28`](https://github.com/python-zeroconf/python-zeroconf/commit/e08db282edd8459e35d17ae4e7278106056a0c94))