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!:deprecate QML upload from bus #120

Open
wants to merge 8 commits into
base: dev
Choose a base branch
from
Open

Conversation

JarbasAl
Copy link
Member

@JarbasAl JarbasAl commented Sep 18, 2024

never worked right, causes more issues than it helps

companion to OpenVoiceOS/ovos-gui#53

Summary by CodeRabbit

Summary by CodeRabbit

  • New Features

    • Simplified GUI interface by removing support for remote server configurations.
    • Introduced a new method for caching GUI resources, enhancing resource management.
    • Transitioned to a more abstract handling of GUI resources, moving away from file uploads.
  • Bug Fixes

    • Streamlined the GUIInterface class by eliminating deprecated functionalities, reducing complexity.
    • Improved error handling for resource name validation.

Copy link

coderabbitai bot commented Sep 18, 2024

Walkthrough

The changes involve significant modifications to the GUIInterface class in the gui.py file. Key functionalities related to remote GUI server handling and the uploading of GUI pages have been removed. This includes the elimination of the remote_server parameter, the upload_gui_pages method, and the _pages2uri method. Additionally, a new method for caching GUI resources has been introduced, and error handling has been updated to enforce stricter validation of resource names.

Changes

File Path Change Summary
ovos_bus_client/apis/gui.py Removed upload_gui_pages, _pages2uri, and updated __init__ and _normalize_page_name methods in GUIInterface. Added _cache_gui_files method.

Sequence Diagram(s)

(No sequence diagrams generated as the changes do not warrant a visual representation of control flow.)

Suggested labels

documentation

Poem

🐇 In the garden of code, changes bloom,
Remote servers fade, making room.
Pages once uploaded, now take flight,
A simpler path, oh what a sight!
With every line, we hop along,
To a new tune, we sing our song! 🎶


Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media?

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Generate unit testing code for this file.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai generate unit testing code for this file.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and generate unit testing code.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

@JarbasAl JarbasAl marked this pull request as draft September 18, 2024 21:30
JarbasAl added a commit to OpenVoiceOS/OVOS-workshop that referenced this pull request Sep 18, 2024
companion to OpenVoiceOS/ovos-gui#53 and OpenVoiceOS/ovos-bus-client#120

this should be merged first as it does not require the others to work and does not break anything in the wild
JarbasAl added a commit to OpenVoiceOS/OVOS-workshop that referenced this pull request Sep 18, 2024
companion to OpenVoiceOS/ovos-gui#53 and OpenVoiceOS/ovos-bus-client#120

this should be merged first as it does not require the others to work and does not break anything in the wild
JarbasAl added a commit to OpenVoiceOS/ovos-ocp-audio-plugin that referenced this pull request Sep 19, 2024
companion to OpenVoiceOS/ovos-gui#53 and OpenVoiceOS/ovos-bus-client#120

this should be merged first as it does not require the others to work and does not break anything in the wild
JarbasAl added a commit to OpenVoiceOS/ovos-ocp-audio-plugin that referenced this pull request Sep 19, 2024
companion to OpenVoiceOS/ovos-gui#53 and OpenVoiceOS/ovos-bus-client#120

this should be merged first as it does not require the others to work and does not break anything in the wild
JarbasAl added a commit to OpenVoiceOS/ovos-ocp-audio-plugin that referenced this pull request Sep 19, 2024
companion to OpenVoiceOS/ovos-gui#53 and OpenVoiceOS/ovos-bus-client#120

this should be merged first as it does not require the others to work and does not break anything in the wild
JarbasAl added a commit to OpenVoiceOS/ovos-gui-plugin-shell-companion that referenced this pull request Sep 19, 2024
companion to OpenVoiceOS/ovos-gui#53 and OpenVoiceOS/ovos-bus-client#120

this should be merged first as it does not require the others to work and does not break anything in the wild
JarbasAl added a commit to OpenVoiceOS/ovos-gui-plugin-shell-companion that referenced this pull request Sep 19, 2024
companion to OpenVoiceOS/ovos-gui#53 and OpenVoiceOS/ovos-bus-client#120

this should be merged first as it does not require the others to work and does not break anything in the wild
JarbasAl added a commit to OpenVoiceOS/ovos-gui-plugin-shell-companion that referenced this pull request Sep 19, 2024
companion to OpenVoiceOS/ovos-gui#53 and OpenVoiceOS/ovos-bus-client#120

this should be merged first as it does not require the others to work and does not break anything in the wild
@JarbasAl JarbasAl marked this pull request as ready for review September 20, 2024 21:03
@JarbasAl
Copy link
Member Author

marked as breaking because it does change the public api, but nothing in our org is using the removed stuff so it should be safe

it may also cause issues in existing docker installs, but GUI in docker never worked quite right, the goal is precisely to make docker work correctly, if all containers are updated this won't cause issues there either

never worked right, causes more issues than it helps
Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 3

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

📥 Commits

Files that changed from the base of the PR and between 346ff66 and fa11187.

📒 Files selected for processing (1)
  • ovos_bus_client/apis/gui.py (7 hunks)
🧰 Additional context used
🔇 Additional comments (5)
ovos_bus_client/apis/gui.py (5)

105-106: Initialization now includes caching GUI files

The __init__ method now calls _cache_gui_files(), which caches GUI resources upon initialization. Ensure that this change does not introduce unintended side effects during object creation.

Including GUI caching in initialization streamlines resource management. However, please ensure that any exceptions raised during caching are properly handled to prevent initialization failures.


316-316: Raising ValueError for file paths in _normalize_page_name

The _normalize_page_name method now raises a ValueError if a file path is provided instead of a resource name. This enforces proper usage of the method.

This change improves input validation and prevents potential misuse by ensuring that only resource names (not file paths) are accepted.


319-321: Logging error for deprecated .qml extension usage

The method logs an error when a page name includes the .qml extension, guiding developers to omit the extension.

By logging this error, developers are alerted to update their code, aligning with the deprecation of including extensions in resource names.


328-328: Addition of remove_others parameter in show_page method

The show_page method now includes a remove_others parameter with a default value of False. This parameter allows control over whether to remove other pages when showing a new one.

The addition enhances functionality by providing flexibility in how pages are displayed. Ensure that this parameter is clearly documented for developers.


83-86: Removal of remote_server parameter may introduce breaking changes

The remote_server parameter has been removed from the __init__ method of the GUIInterface class. This alteration changes the public API and can lead to issues if external code relies on this parameter.

Please verify that no external code or downstream projects are instantiating GUIInterface with the remote_server parameter. Run the following script to identify any such instances:

Comment on lines +107 to +125
def _cache_gui_files(self):
if not self.ui_directories:
LOG.debug(f"{self.skill_id} has no GUI resources")
return

# this path is hardcoded in ovos_gui.constants and follows XDG spec
GUI_CACHE_PATH = get_xdg_cache_save_path('ovos_gui')

@remote_url.setter
def remote_url(self, val: str):
self.config["remote-server"] = val
output_path = f"{GUI_CACHE_PATH}/{self.skill_id}"
if os.path.exists(output_path):
LOG.info(f"Removing existing {self.skill_id} cached GUI resources before updating")
shutil.rmtree(output_path)

for framework, bpath in self.ui_directories.items():
if framework == "all":
LOG.warning(f"'all' is deprecated! ignoring path: {bpath}")
continue
shutil.copytree(bpath, f"{output_path}/{framework}")
LOG.debug(f"Copied {self.skill_id} resources from {bpath} to {output_path}/{framework}")
Copy link

Choose a reason for hiding this comment

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

⚠️ Potential issue

Implement error handling in _cache_gui_files() method

The new _cache_gui_files() method manages the caching of GUI resources. While it performs necessary file operations, it currently lacks comprehensive error handling. Potential issues include permission errors, missing directories, or file copy failures.

To enhance robustness, consider wrapping file operations with try-except blocks and logging any exceptions. For example:

try:
    if os.path.exists(output_path):
        LOG.info(f"Removing existing {self.skill_id} cached GUI resources before updating")
        shutil.rmtree(output_path)
except Exception as e:
    LOG.error(f"Error removing existing cache at '{output_path}': {e}")

# ...

try:
    shutil.copytree(bpath, f"{output_path}/{framework}")
    LOG.debug(f"Copied {self.skill_id} resources from {bpath} to {output_path}/{framework}")
except Exception as e:
    LOG.error(f"Error copying resources from '{bpath}' to '{output_path}/{framework}': {e}")

ovos_bus_client/apis/gui.py Show resolved Hide resolved
ovos_bus_client/apis/gui.py Show resolved Hide resolved
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant