Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Refactor for initial public release #5

Merged
merged 25 commits into from
Oct 31, 2023
Merged

Refactor for initial public release #5

merged 25 commits into from
Oct 31, 2023

Conversation

zehnm
Copy link
Contributor

@zehnm zehnm commented Oct 30, 2023

This PR is a major refactoring for v0.1.0 to make this library a bit more Pythonic and follow the official Python style guides.

Fixed

  • mDNS service publishing announces local hostname. UC_MDNS_LOCAL_HOSTNAME allows to override the local hostname.
  • ENV var handling: UC_INTEGRATION_INTERFACE and UC_INTEGRATION_HTTP_PORT are optional
  • config_dir_path is always set

Changed

  • driver setup process
  • entity command handler
  • don't expose AsyncIOEventEmitter for event callbacks
  • invalid names in public classes
  • logging configuration, configuration must be done in client code

Prepare project for public release:

  • add CONTRIBUTING.md
  • add CHANGELOG.md
  • add a minimal example
  • enhance README

Closes #1
Fixes #2
Fixes #3

zehnm added 25 commits October 26, 2023 23:58
- Remove logging.basicConfig() calls.
  Must be done by client.
- Make logging instances private.
- Move entity creation log statement to base class.
- best effort in broadcast_ws_event
- add more type information
- add docstrings
The client may only listen to events, but not take control over the event emitter or know about the internals.
Add a command handler on the Entity.
This will simplify the client command handling significantly:
- configured entity is passed as argument
- basic error checking is done in the library
- websocket stays hidden
- command acknowledgment is implemented in the library
Don't expose websocket or request ids. Setup flow is controlled by new data classes:

- Return object is the next step in the setup flow.
- The client should not have to know or call driver_setup_error, request_driver_setup_user_input, etc.
Publish service with local hostname.
Cleanup interface and port handling.

Fixes #2
Fixes #3
Use ENV var UC_CONFIG_HOME for configuration directory, fallback to HOME directory or local path.
- exclude fixme tags
- don't allow any issues anymore besides disabled ones
@zehnm zehnm merged commit b2083c4 into main Oct 31, 2023
2 checks passed
@zehnm zehnm deleted the refactor branch November 2, 2023 11:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
3 participants