Will not contain minor changes -- feel free to look through git log
for
more detail.
- Force keyword arguments in
CommandLinePlugin
as done elsewhere- This is really the only cause of the "highest nonzero version number" bump
- Fix plugins not passing
initial_state
to parent class (#122) - Tweaks to nix development environment
- Add coverage testing to
tests/
to ensure all testing code paths are taken
- Add
initial_state
kwarg for plugins- See notes for eb749275a06c443bf4c914c450f9717ee3c7f212
- Python 3.11, drop official 3.7 support
- Add a basic config validation function
- Support config in
~/.config/fauxmo
- Framework for nix and docker support
- Add timeouts to default plugins
- 2f9212b67dec62a4cc9c1609fbbe59dcea1c3d27
- Commands that block freeze everything due to the way asyncio works. Highly recommended to leverage these timeouts for anything that may block
- Add support
shell=True
commands- Use at your own risk :)
- Migrate setup.cfg to standalone pyproject.toml
- 09f80b364b85b327ab3f92c5e6f538b001a6becc
- type hinting updates
- Python 3.10
- Add optional
uvloop
support (#112) - Add option to override
domain
tohomeassistantplugin.py
(#114)
- Version bumps to upload new pyproject.toml format to PyPI
- Add py38 support
- Add
use_fake_state
option to accommodate situations that state can't be properly determined (thanks @johngo7470) - Bugfix: fix unexpected behavior with a switch's state logic was true for both
on
andoff
- Migrated HomeAssistantPlugin and CommandLinePlugin from fauxmo-plugins repo
- Update tests, pytest fixtures, and add some mocks
- Add py37 support (including Travis workaround)
- Fix bug in content-length calculation (thanks @tim15)
- Replace
find_unused_port
with local function (thanks @schneideradam) - Use black for formatting
- Update
config-sample.txt
for changes in HomeAssistant API
- Add
.close()
method toFauxmoPlugin
s, allowing for cleanup (thanks @howdypierce) discussion, e907245 - Append plugins directory to
sys.path
for more convenient loading of additional modules (thanks @howdypierce) discussion, 03f2101 - Add HTTP headers to
/eventservice.xml
and/metainfoservice.xml
endpoints 5a53268
- Minor dev-side changes
- Use pipenv for dev dependency management
- Add utf-8 to readme parsing (5 days ago) (thanks @hestela!) 49d2c57
- Change newline to
\r\n
in HTTP responses (thanks @GlennPegden2) 239bc79 - Match
MAN:
case insensitive (thanks @wingett) 8307096 - Add GetBinaryState and GetFriendlyName commands including test cases (thanks @howdypierce!) 71392de
- Make comparison of the "SOAPACTION" header case-insensitive, per UPnP spec (thanks @howdypierce!) a5cdf82
- Add fallback for determining IP address when DNS resolution is a problem (thanks @howdypierce!) c2d7f13
- Bugfix: ~/.fauxmo/ not being read as a location for config file (thanks @howdypierce!) c322c9b
- Mostly changes to try to fix compatibility with newer generation Echos / Echo Plus, see #38
- Support new GetBinaryState command (fixes #31)
- Add
--version
to cli - Add
python_requires
specifier tosetup.py
- Bind to specific address in
make_udp_sock
(fauxmo.utils
), seems to fix some intermittent failing tests on MacOS.
- Add additional linters to tests
- Set reuseaddr and reuseport before binding socket
- Rename handlers to plugins
- Add interface for user plugins
- Add type hints
- Require Python 3.6
- Eliminate third party dependencies
- Make sure to close connection when plugin commands fail / return False
- Added compatibility for
rollershutter
tohandlers.hass
- Changed
handlers.hass
to send values from a dict to make addition of new services easier in the future
- Update SSDPServer to
setsockopt
to permit receiving multicast broadcasts sock
kwarg tocreate_datagram_endpoint
no longer necessary, restoring functionality to Python 3.4.0 - 3.4.3 (closes #6)make_udp_sock()
no longer necessary, removed fromfauxmo.utils
- Tox and Travis configs switched to use Python 3.4.2 instead of 3.4.4 (since 3.4.2 is the latest available in the default Raspbian Jessie repos)
- Don't decode the UDP multicast broadcasts (hopefully fixes #7)
- They might not be from the Echo and might cause a
UnicodeDecodeError
- Just search the bytes instead
- They might not be from the Echo and might cause a
- Tests updated for this minor change
- Fauxmo now uses asyncio and requires Python >= 3.4.4
- Extensive changes to codebase
- Handler classes renamed for PEP8 (capitalization)
- Moved some general purpose functions to
fauxmo.utils
module - Both the UDP and TCP servers are now in
fauxmo.protocols
- Added some rudimentary pytest tests including tox and Travis support
- Updated documentation on several classes
- Add additional HTTP verbs and options to
RestApiHandler
and Indigo sample to config- NB: Breaking change:
json
config variable now needs to be eitheron_json
oroff_json
- NB: Breaking change:
- Make
RestApiHandler
DRYer withfunctools.partialmethod
- Add
SO_REUSEPORT
toupnp.py
to make life easier on OS X
- Consolidate logger to
__init__.py
and import from there in other modules
- Add the ability to manually specify the host IP address for cases when the auto detection isn't working (#1)
- Deprecated the
DEBUG
setting inconfig.json
. Just use-vvv
from now on.
- Fix for Linux not returning local IP
- restored method I had removed from Maker Musings original / pre-fork version not knowing it would introduce a bug where Linux returned 127.0.1.1 as local IP address
- Fix default verbosity bug introduced in 1.1.3
- Continue to convert to python3 code
- Pulled in a few PRs by @DoWhileGeek working towards python3 compatibility and improved devices naming with dictionary
- Renamed a fair number of classes
- Added kwargs to several class and function calls for clarity
- Renamed several variables for clarity
- Got rid of a few empty methods
- Import devices from
config.json
and include a sample - Support
POST
, headers, and json data in the RestApiHandler - Change old debug function to use logging module
- Got rid of some unused dependencies
- Moved license (MIT) info to LICENSE
- Added argparse for future console scripts entry point
- Added Home Assistant API handler class
- Use "string".format() instead of percent
- Lots of other minor refactoring