Skip to content

Move code into submodules to make it easier to write tests for - #12

Merged
FutureTense merged 6 commits into
FutureTense:mainfrom
raman325:submodules
Dec 13, 2020
Merged

Move code into submodules to make it easier to write tests for#12
FutureTense merged 6 commits into
FutureTense:mainfrom
raman325:submodules

Conversation

@raman325

@raman325 raman325 commented Dec 10, 2020

Copy link
Copy Markdown
Collaborator

Proposed change

__init__.py was getting too big and would've consequently been difficult to write tests for. This PR moves code into separate submodules which will make it easier to isolate tests. There are no functional changes to the code.

EDIT: There is also a bug fix that properly unloads the sensors created by the integration.

Type of change

  • Dependency upgrade
  • Bugfix (non-breaking change which fixes an issue)
  • New feature (which adds functionality)
  • Breaking change (fix/feature causing existing functionality to break)
  • Code quality improvements to existing code or addition of tests

Additional information

  • This PR fixes or closes issue: fixes #
  • This PR is related to issue:

* refactor, bug fixes, and improvements

New Features
- cleanup packages folder on entry removal

Changes
- switch to using relative path for CONF_PATH to reduce changes of error (existing config entries will be updated automatically)

Bug Fixes
- Switch _generate_package from async to sync because it does I/O on the filesystem
- fix output file not being opened with context manager (so never closed)
- fix sensor creation loop to only create necessary sensors instead of sensors for all code slots
- fix CodeSlotsData sensor (now a DataUpdateCoordinator) logic for OZW integrations

Code Cleanup/Improvements
- move CodeSlotsData logic into DataUpdateCoordinator since that's what it is being used for
- reduce polling frequency significantly by only polling any time a slot is set or cleared with a backup hourly polling in case updates are made outside of KeyMaster (this will significantly improve battery life over current implementation with the same level of accuracy)
- Update config entry using update method instead of directly manipulating attributes
- use slugify when fixing CONF_NAME
- use os.path.join to create paths for better OS compatibility
- switch to using f-strings
- only attempt cleanup of packages directory if it exists
- always rely on entry.data so that options is only used to capture options updates
- simplify code and reduced repeat logic by moving things into common functions
- raise Exceptions in services when there is a failure (this will be shown in UI)
- use more list comprehensions
- switch while loops to for loops
- added typing
- gitignore venv
- improve debug messaging

* fix typo

* refactor, bug fixes, and improvements

New Features
- cleanup packages folder on entry removal

Changes
- switch to using relative path for CONF_PATH to reduce changes of error (existing config entries will be updated automatically)

Bug Fixes
- Switch _generate_package from async to sync because it does I/O on the filesystem
- fix output file not being opened with context manager (so never closed)
- fix sensor creation loop to only create necessary sensors instead of sensors for all code slots
- fix CodeSlotsData sensor (now a DataUpdateCoordinator) logic for OZW integrations

Code Cleanup/Improvements
- move CodeSlotsData logic into DataUpdateCoordinator since that's what it is being used for
- reduce polling frequency significantly by only polling any time a slot is set or cleared with a backup hourly polling in case updates are made outside of KeyMaster (this will significantly improve battery life over current implementation with the same level of accuracy)
- Update config entry using update method instead of directly manipulating attributes
- use slugify when fixing CONF_NAME
- use os.path.join to create paths for better OS compatibility
- switch to using f-strings
- only attempt cleanup of packages directory if it exists
- always rely on entry.data so that options is only used to capture options updates
- simplify code and reduced repeat logic by moving things into common functions
- raise Exceptions in services when there is a failure (this will be shown in UI)
- use more list comprehensions
- switch while loops to for loops
- added typing
- gitignore venv
- improve debug messaging

* remove helper entities on entry unload or options update

* remove counter since it's not actually used, it was just there for futureproofing

* bugfix
@firstof9 firstof9 added the enhancement New feature or request label Dec 10, 2020

@firstof9 firstof9 left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Changes look good 👍

@FutureTense

Copy link
Copy Markdown
Owner

S’all good

@FutureTense
FutureTense merged commit 0e033b7 into FutureTense:main Dec 13, 2020
@raman325
raman325 deleted the submodules branch December 14, 2020 06:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants