qcanvas 2.0.3__tar.gz → 2.0.5__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of qcanvas might be problematic. Click here for more details.

Files changed (91) hide show
  1. {qcanvas-2.0.3 → qcanvas-2.0.5}/PKG-INFO +5 -6
  2. {qcanvas-2.0.3 → qcanvas-2.0.5}/README.md +2 -3
  3. {qcanvas-2.0.3 → qcanvas-2.0.5}/pyproject.toml +5 -6
  4. {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/__init__.py +15 -9
  5. {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/ui/qcanvas_window/qcanvas_window.py +8 -4
  6. {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/app.py +0 -0
  7. {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/backend_connectors/__init__.py +0 -0
  8. {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/backend_connectors/frontend_resource_manager.py +0 -0
  9. {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/backend_connectors/qcanvas_task_master.py +0 -0
  10. {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/icons/__init__.py +0 -0
  11. {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/icons/_icon_type.py +0 -0
  12. {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/icons/icons.qrc +0 -0
  13. {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/icons/rc_icons.py +0 -0
  14. {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/settings/__init__.py +0 -0
  15. {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/settings/_client_settings.py +0 -0
  16. {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/settings/_course_settings.py +0 -0
  17. {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/settings/_mapped_setting.py +0 -0
  18. {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/settings/_ui_settings.py +0 -0
  19. {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/theme.py +0 -0
  20. {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/ui/__init__.py +0 -0
  21. {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/ui/course_viewer/__init__.py +0 -0
  22. {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/ui/course_viewer/content_tree.py +0 -0
  23. {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/ui/course_viewer/course_tree/__init__.py +0 -0
  24. {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/ui/course_viewer/course_tree/_course_icon_generator.py +0 -0
  25. {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/ui/course_viewer/course_tree/course_tree.py +0 -0
  26. {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/ui/course_viewer/course_viewer.py +0 -0
  27. {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/ui/course_viewer/tabs/__init__.py +0 -0
  28. {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/ui/course_viewer/tabs/assignment_tab/__init__.py +0 -0
  29. {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/ui/course_viewer/tabs/assignment_tab/assignment_tab.py +0 -0
  30. {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/ui/course_viewer/tabs/assignment_tab/assignment_tree.py +0 -0
  31. {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/ui/course_viewer/tabs/constants.py +0 -0
  32. {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/ui/course_viewer/tabs/content_tab.py +0 -0
  33. {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/ui/course_viewer/tabs/file_tab/__init__.py +0 -0
  34. {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/ui/course_viewer/tabs/file_tab/file_tab.py +0 -0
  35. {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/ui/course_viewer/tabs/file_tab/file_tree.py +0 -0
  36. {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/ui/course_viewer/tabs/file_tab/pages_file_tree.py +0 -0
  37. {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/ui/course_viewer/tabs/mail_tab/__init__.py +0 -0
  38. {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/ui/course_viewer/tabs/mail_tab/mail_tab.py +0 -0
  39. {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/ui/course_viewer/tabs/mail_tab/mail_tree.py +0 -0
  40. {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/ui/course_viewer/tabs/page_tab/__init__.py +0 -0
  41. {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/ui/course_viewer/tabs/page_tab/page_tab.py +0 -0
  42. {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/ui/course_viewer/tabs/page_tab/page_tree.py +0 -0
  43. {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/ui/course_viewer/tabs/resource_rich_browser.py +0 -0
  44. {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/ui/course_viewer/tree_widget_data_item.py +0 -0
  45. {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/ui/memory_tree/__init__.py +0 -0
  46. {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/ui/memory_tree/_tree_memory.py +0 -0
  47. {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/ui/memory_tree/memory_tree_widget.py +0 -0
  48. {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/ui/memory_tree/memory_tree_widget_item.py +0 -0
  49. {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/ui/qcanvas_window/__init__.py +0 -0
  50. {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/ui/qcanvas_window/course_viewer_container.py +0 -0
  51. {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/ui/qcanvas_window/options/__init__.py +0 -0
  52. {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/ui/qcanvas_window/options/auto_download_resources_option.py +0 -0
  53. {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/ui/qcanvas_window/options/quick_sync_option.py +0 -0
  54. {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/ui/qcanvas_window/options/sync_on_start_option.py +0 -0
  55. {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/ui/qcanvas_window/options/theme_selection_menu.py +0 -0
  56. {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/ui/qcanvas_window/status_bar_progress_display.py +0 -0
  57. {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/ui/qml_components/__init__.py +0 -0
  58. {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/ui/qml_components/attachments_pane.py +0 -0
  59. {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/ui/qml_components/comments_pane.py +0 -0
  60. {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/ui/qml_components/qml/AttachmentsList.ui.qml +0 -0
  61. {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/ui/qml_components/qml/AttachmentsListDelegate.qml +0 -0
  62. {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/ui/qml_components/qml/AttachmentsListModel.qml +0 -0
  63. {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/ui/qml_components/qml/AttachmentsPane.qml +0 -0
  64. {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/ui/qml_components/qml/CommentsList.ui.qml +0 -0
  65. {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/ui/qml_components/qml/CommentsListDelegate.ui.qml +0 -0
  66. {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/ui/qml_components/qml/CommentsListModel.qml +0 -0
  67. {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/ui/qml_components/qml/CommentsPane.qml +0 -0
  68. {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/ui/qml_components/qml/DecoratedText.ui.qml +0 -0
  69. {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/ui/qml_components/qml/Spacer.ui.qml +0 -0
  70. {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/ui/qml_components/qml/ThemedRectangle.qml +0 -0
  71. {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/ui/qml_components/qml/__init__.py +0 -0
  72. {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/ui/qml_components/qml/rc_qml.py +0 -0
  73. {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/ui/qml_components/qml/rc_qml.qrc +0 -0
  74. {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/ui/qml_components/qml_bridge_types.py +0 -0
  75. {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/ui/qml_components/qml_pane.py +0 -0
  76. {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/ui/setup/__init__.py +0 -0
  77. {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/ui/setup/setup_checker.py +0 -0
  78. {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/ui/setup/setup_dialog.py +0 -0
  79. {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/util/__init__.py +0 -0
  80. {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/util/auto_downloader.py +0 -0
  81. {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/util/basic_fonts.py +0 -0
  82. {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/util/context_dict.py +0 -0
  83. {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/util/file_icons.py +0 -0
  84. {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/util/html_cleaner.py +0 -0
  85. {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/util/layouts.py +0 -0
  86. {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/util/logs.py +0 -0
  87. {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/util/paths.py +0 -0
  88. {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/util/qurl_util.py +0 -0
  89. {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/util/runtime.py +0 -0
  90. {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/util/ui_tools.py +0 -0
  91. {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/util/url_checker.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: qcanvas
3
- Version: 2.0.3
3
+ Version: 2.0.5
4
4
  Summary: View courses from Canvas LMS
5
5
  Author: QCanvas
6
6
  Author-email: QCanvas@noreply.codeberg.org
@@ -8,10 +8,10 @@ Requires-Python: >=3.12,<3.13
8
8
  Classifier: Programming Language :: Python :: 3
9
9
  Classifier: Programming Language :: Python :: 3.12
10
10
  Requires-Dist: aiofile (>=3.9.0,<4.0.0)
11
- Requires-Dist: aiosqlite (>=0.20.0,<0.21.0)
11
+ Requires-Dist: aiosqlite (>=0.21.0,<0.22.0)
12
12
  Requires-Dist: asynctaskpool (>=0.2.1,<0.3.0)
13
13
  Requires-Dist: cachetools (>=5.5.0,<6.0.0)
14
- Requires-Dist: libqcanvas (>=0.5.4,<0.6.0)
14
+ Requires-Dist: libqcanvas (>=0.5.5,<0.6.0)
15
15
  Requires-Dist: platformdirs (>=4.2.2,<5.0.0)
16
16
  Requires-Dist: pyqtdarktheme-fork (>=2.3.2,<3.0.0)
17
17
  Requires-Dist: qasync (>=0.27.1,<0.28.0)
@@ -35,8 +35,7 @@ https://github.com/QCanvas/QCanvasApp
35
35
 
36
36
  You can download a **windows** version from [releases](https://github.com/QCanvas/QCanvasApp/releases)
37
37
 
38
- > [!WARNING]
39
- > The appimage version is currently broken and may be dropped in the future.
38
+ An appimage version is also available from releases but is not recommended.
40
39
 
41
40
  # Development/Run from source
42
41
 
@@ -63,7 +62,7 @@ poetry run python -m qcanvas
63
62
  ## Build custom AppImage
64
63
 
65
64
  > [!WARNING]
66
- > This is not recommended as the appimage produced by this process isn't a proper appimage.
65
+ > This is not recommended as the appimage produced by this process isn't a proper appimage. It's just a pyinstaller build bundled as an appimage.
67
66
 
68
67
  > [!IMPORTANT]
69
68
  > You will need [Appimagetool](https://github.com/AppImage/appimagetool)
@@ -14,8 +14,7 @@ https://github.com/QCanvas/QCanvasApp
14
14
 
15
15
  You can download a **windows** version from [releases](https://github.com/QCanvas/QCanvasApp/releases)
16
16
 
17
- > [!WARNING]
18
- > The appimage version is currently broken and may be dropped in the future.
17
+ An appimage version is also available from releases but is not recommended.
19
18
 
20
19
  # Development/Run from source
21
20
 
@@ -42,7 +41,7 @@ poetry run python -m qcanvas
42
41
  ## Build custom AppImage
43
42
 
44
43
  > [!WARNING]
45
- > This is not recommended as the appimage produced by this process isn't a proper appimage.
44
+ > This is not recommended as the appimage produced by this process isn't a proper appimage. It's just a pyinstaller build bundled as an appimage.
46
45
 
47
46
  > [!IMPORTANT]
48
47
  > You will need [Appimagetool](https://github.com/AppImage/appimagetool)
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "qcanvas"
3
- version = "2.0.3"
3
+ version = "2.0.5"
4
4
  description = "View courses from Canvas LMS"
5
5
  authors = ["QCanvas <QCanvas@noreply.codeberg.org>"]
6
6
  readme = "README.md"
@@ -16,12 +16,12 @@ qcanvas = "qcanvas:main"
16
16
 
17
17
  [tool.poetry.dependencies]
18
18
  python = ">=3.12,<3.13"
19
- libqcanvas = "^0.5.4"
19
+ libqcanvas = "^0.5.5"
20
20
  #libqcanvas = { path = "../libqcanvas/", develop = true }
21
21
  #libqcanvas-clients = { path = "../libqcanvas_clients/", develop = true }
22
22
  asynctaskpool = "^0.2.1"
23
23
  sqlalchemy = "^2.0.31"
24
- aiosqlite = "^0.20.0"
24
+ aiosqlite = "^0.21.0"
25
25
  pyqtdarktheme-fork = "^2.3.2"
26
26
  qasync = "^0.27.1"
27
27
  platformdirs = "^4.2.2"
@@ -30,8 +30,7 @@ cachetools = "^5.5.0"
30
30
  aiofile = "^3.9.0"
31
31
 
32
32
  [tool.poetry.group.flatpak-exclude.dependencies]
33
- pyside6-essentials = "^6.8.0"
34
- shiboken6 = "6.8.1" # pinned because latest release is ONLY a macos version for some reason
33
+ pyside6-essentials = "^6.9.0"
35
34
  setuptools = "^71.1.0"
36
35
  pyinstaller = "^6.10.0"
37
36
 
@@ -54,4 +53,4 @@ build-backend = "poetry.core.masonry.api"
54
53
  "__init__.py" = ["F401"]
55
54
 
56
55
  [tool.ruff.lint.isort]
57
- known-first-party = ["libqcanvas_clients", "asynctaskpool", "libqcanvas"]
56
+ known-first-party = ["libqcanvas_clients", "asynctaskpool", "libqcanvas"]
@@ -23,6 +23,7 @@
23
23
  # nuitka-project: --nofollow-import-to=yt_dlp.extractor.lazy_extractors
24
24
 
25
25
  import logging
26
+ import logging.config
26
27
  from logging import INFO, WARNING
27
28
 
28
29
  import qcanvas.app as app
@@ -34,18 +35,23 @@ def main():
34
35
 
35
36
  logging.basicConfig(
36
37
  filemode="w",
37
- filename=paths.data_storage() / "debug.log",
38
+ filename=paths.data_storage() / "qcanvas.log",
38
39
  level="WARN",
39
40
  )
40
41
 
41
- logs.set_levels(
42
- {
43
- "qcanvas": INFO,
44
- "qcanvas.ui": WARNING,
45
- "libqcanvas": INFO,
46
- "qcanvas.ui.main_ui.status_bar_progress_display": INFO,
47
- }
48
- )
42
+ log_config = paths.data_storage() / "logging.ini"
43
+
44
+ if log_config.exists():
45
+ logging.config.fileConfig(log_config, disable_existing_loggers=False)
46
+ else:
47
+ logs.set_levels(
48
+ {
49
+ "qcanvas": INFO,
50
+ "qcanvas.ui": WARNING,
51
+ "libqcanvas": INFO,
52
+ "qcanvas.ui.main_ui.status_bar_progress_display": INFO,
53
+ }
54
+ )
49
55
 
50
56
  app.launch()
51
57
 
@@ -234,10 +234,14 @@ class QCanvasWindow(QMainWindow):
234
234
  opening_progress_dialog.setWindowTitle("Please wait")
235
235
  opening_progress_dialog.show()
236
236
 
237
- open_url = QUrl(await self._qcanvas.canvas_client.get_temporary_session_url())
238
- _logger.info(f"Opening URL {open_url}")
239
- QDesktopServices.openUrl(open_url)
240
- opening_progress_dialog.close()
237
+ try:
238
+ open_url = QUrl(
239
+ await self._qcanvas.canvas_client.get_temporary_session_url()
240
+ )
241
+ _logger.info(f"Opening URL {open_url}")
242
+ QDesktopServices.openUrl(open_url)
243
+ finally:
244
+ opening_progress_dialog.close()
241
245
 
242
246
  @Slot()
243
247
  def _open_downloads_folder(self) -> None:
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes