weeb-cli 2.16.2__tar.gz → 2.16.3__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.
Files changed (129) hide show
  1. {weeb_cli-2.16.2 → weeb_cli-2.16.3}/PKG-INFO +10 -4
  2. {weeb_cli-2.16.2 → weeb_cli-2.16.3}/pyproject.toml +3 -2
  3. {weeb_cli-2.16.2 → weeb_cli-2.16.3}/weeb_cli/__init__.py +1 -1
  4. {weeb_cli-2.16.2 → weeb_cli-2.16.3}/weeb_cli/commands/search/watch_flow.py +10 -0
  5. {weeb_cli-2.16.2 → weeb_cli-2.16.3}/weeb_cli/locales/de.json +2 -1
  6. {weeb_cli-2.16.2 → weeb_cli-2.16.3}/weeb_cli/locales/en.json +2 -1
  7. {weeb_cli-2.16.2 → weeb_cli-2.16.3}/weeb_cli/locales/pl.json +2 -1
  8. {weeb_cli-2.16.2 → weeb_cli-2.16.3}/weeb_cli/locales/tr.json +2 -1
  9. {weeb_cli-2.16.2 → weeb_cli-2.16.3}/weeb_cli/services/local_library.py +12 -1
  10. {weeb_cli-2.16.2 → weeb_cli-2.16.3}/weeb_cli.egg-info/PKG-INFO +10 -4
  11. {weeb_cli-2.16.2 → weeb_cli-2.16.3}/weeb_cli.egg-info/requires.txt +10 -3
  12. {weeb_cli-2.16.2 → weeb_cli-2.16.3}/LICENSE +0 -0
  13. {weeb_cli-2.16.2 → weeb_cli-2.16.3}/README.md +0 -0
  14. {weeb_cli-2.16.2 → weeb_cli-2.16.3}/setup.cfg +0 -0
  15. {weeb_cli-2.16.2 → weeb_cli-2.16.3}/tests/test_anilist_tracker.py +0 -0
  16. {weeb_cli-2.16.2 → weeb_cli-2.16.3}/tests/test_aniworld_provider.py +0 -0
  17. {weeb_cli-2.16.2 → weeb_cli-2.16.3}/tests/test_api.py +0 -0
  18. {weeb_cli-2.16.2 → weeb_cli-2.16.3}/tests/test_cache.py +0 -0
  19. {weeb_cli-2.16.2 → weeb_cli-2.16.3}/tests/test_exceptions.py +0 -0
  20. {weeb_cli-2.16.2 → weeb_cli-2.16.3}/tests/test_kitsu_tracker.py +0 -0
  21. {weeb_cli-2.16.2 → weeb_cli-2.16.3}/tests/test_mal_tracker.py +0 -0
  22. {weeb_cli-2.16.2 → weeb_cli-2.16.3}/tests/test_providers.py +0 -0
  23. {weeb_cli-2.16.2 → weeb_cli-2.16.3}/tests/test_restful_api.py +0 -0
  24. {weeb_cli-2.16.2 → weeb_cli-2.16.3}/tests/test_sanitizer.py +0 -0
  25. {weeb_cli-2.16.2 → weeb_cli-2.16.3}/tests/test_sanitizer_security.py +0 -0
  26. {weeb_cli-2.16.2 → weeb_cli-2.16.3}/tests/test_sdk.py +0 -0
  27. {weeb_cli-2.16.2 → weeb_cli-2.16.3}/weeb_cli/__main__.py +0 -0
  28. {weeb_cli-2.16.2 → weeb_cli-2.16.3}/weeb_cli/commands/__init__.py +0 -0
  29. {weeb_cli-2.16.2 → weeb_cli-2.16.3}/weeb_cli/commands/api.py +0 -0
  30. {weeb_cli-2.16.2 → weeb_cli-2.16.3}/weeb_cli/commands/downloads.py +0 -0
  31. {weeb_cli-2.16.2 → weeb_cli-2.16.3}/weeb_cli/commands/library.py +0 -0
  32. {weeb_cli-2.16.2 → weeb_cli-2.16.3}/weeb_cli/commands/search/__init__.py +0 -0
  33. {weeb_cli-2.16.2 → weeb_cli-2.16.3}/weeb_cli/commands/search/anime_details.py +0 -0
  34. {weeb_cli-2.16.2 → weeb_cli-2.16.3}/weeb_cli/commands/search/download_flow.py +0 -0
  35. {weeb_cli-2.16.2 → weeb_cli-2.16.3}/weeb_cli/commands/search/episode_utils.py +0 -0
  36. {weeb_cli-2.16.2 → weeb_cli-2.16.3}/weeb_cli/commands/search/search_handlers.py +0 -0
  37. {weeb_cli-2.16.2 → weeb_cli-2.16.3}/weeb_cli/commands/search/stream_utils.py +0 -0
  38. {weeb_cli-2.16.2 → weeb_cli-2.16.3}/weeb_cli/commands/search.py +0 -0
  39. {weeb_cli-2.16.2 → weeb_cli-2.16.3}/weeb_cli/commands/serve.py +0 -0
  40. {weeb_cli-2.16.2 → weeb_cli-2.16.3}/weeb_cli/commands/serve_restful.py +0 -0
  41. {weeb_cli-2.16.2 → weeb_cli-2.16.3}/weeb_cli/commands/settings/__init__.py +0 -0
  42. {weeb_cli-2.16.2 → weeb_cli-2.16.3}/weeb_cli/commands/settings/settings_backup.py +0 -0
  43. {weeb_cli-2.16.2 → weeb_cli-2.16.3}/weeb_cli/commands/settings/settings_cache.py +0 -0
  44. {weeb_cli-2.16.2 → weeb_cli-2.16.3}/weeb_cli/commands/settings/settings_config.py +0 -0
  45. {weeb_cli-2.16.2 → weeb_cli-2.16.3}/weeb_cli/commands/settings/settings_download.py +0 -0
  46. {weeb_cli-2.16.2 → weeb_cli-2.16.3}/weeb_cli/commands/settings/settings_drives.py +0 -0
  47. {weeb_cli-2.16.2 → weeb_cli-2.16.3}/weeb_cli/commands/settings/settings_menu.py +0 -0
  48. {weeb_cli-2.16.2 → weeb_cli-2.16.3}/weeb_cli/commands/settings/settings_shortcuts.py +0 -0
  49. {weeb_cli-2.16.2 → weeb_cli-2.16.3}/weeb_cli/commands/settings/settings_trackers.py +0 -0
  50. {weeb_cli-2.16.2 → weeb_cli-2.16.3}/weeb_cli/commands/settings.py +0 -0
  51. {weeb_cli-2.16.2 → weeb_cli-2.16.3}/weeb_cli/commands/setup.py +0 -0
  52. {weeb_cli-2.16.2 → weeb_cli-2.16.3}/weeb_cli/commands/watchlist.py +0 -0
  53. {weeb_cli-2.16.2 → weeb_cli-2.16.3}/weeb_cli/config.py +0 -0
  54. {weeb_cli-2.16.2 → weeb_cli-2.16.3}/weeb_cli/constants.py +0 -0
  55. {weeb_cli-2.16.2 → weeb_cli-2.16.3}/weeb_cli/exceptions.py +0 -0
  56. {weeb_cli-2.16.2 → weeb_cli-2.16.3}/weeb_cli/i18n.py +0 -0
  57. {weeb_cli-2.16.2 → weeb_cli-2.16.3}/weeb_cli/main.py +0 -0
  58. {weeb_cli-2.16.2 → weeb_cli-2.16.3}/weeb_cli/providers/__init__.py +0 -0
  59. {weeb_cli-2.16.2 → weeb_cli-2.16.3}/weeb_cli/providers/base.py +0 -0
  60. {weeb_cli-2.16.2 → weeb_cli-2.16.3}/weeb_cli/providers/de/__init__.py +0 -0
  61. {weeb_cli-2.16.2 → weeb_cli-2.16.3}/weeb_cli/providers/de/aniworld.py +0 -0
  62. {weeb_cli-2.16.2 → weeb_cli-2.16.3}/weeb_cli/providers/en/__init__.py +0 -0
  63. {weeb_cli-2.16.2 → weeb_cli-2.16.3}/weeb_cli/providers/en/allanime.py +0 -0
  64. {weeb_cli-2.16.2 → weeb_cli-2.16.3}/weeb_cli/providers/en/hianime.py +0 -0
  65. {weeb_cli-2.16.2 → weeb_cli-2.16.3}/weeb_cli/providers/extractors/__init__.py +0 -0
  66. {weeb_cli-2.16.2 → weeb_cli-2.16.3}/weeb_cli/providers/extractors/doodstream.py +0 -0
  67. {weeb_cli-2.16.2 → weeb_cli-2.16.3}/weeb_cli/providers/extractors/filemoon.py +0 -0
  68. {weeb_cli-2.16.2 → weeb_cli-2.16.3}/weeb_cli/providers/extractors/megacloud.py +0 -0
  69. {weeb_cli-2.16.2 → weeb_cli-2.16.3}/weeb_cli/providers/extractors/streamtape.py +0 -0
  70. {weeb_cli-2.16.2 → weeb_cli-2.16.3}/weeb_cli/providers/extractors/vidoza.py +0 -0
  71. {weeb_cli-2.16.2 → weeb_cli-2.16.3}/weeb_cli/providers/extractors/voe.py +0 -0
  72. {weeb_cli-2.16.2 → weeb_cli-2.16.3}/weeb_cli/providers/pl/__init__.py +0 -0
  73. {weeb_cli-2.16.2 → weeb_cli-2.16.3}/weeb_cli/providers/pl/docchi.py +0 -0
  74. {weeb_cli-2.16.2 → weeb_cli-2.16.3}/weeb_cli/providers/registry.py +0 -0
  75. {weeb_cli-2.16.2 → weeb_cli-2.16.3}/weeb_cli/providers/tr/__init__.py +0 -0
  76. {weeb_cli-2.16.2 → weeb_cli-2.16.3}/weeb_cli/providers/tr/animecix.py +0 -0
  77. {weeb_cli-2.16.2 → weeb_cli-2.16.3}/weeb_cli/providers/tr/anizle.py +0 -0
  78. {weeb_cli-2.16.2 → weeb_cli-2.16.3}/weeb_cli/providers/tr/turkanime.py +0 -0
  79. {weeb_cli-2.16.2 → weeb_cli-2.16.3}/weeb_cli/providers/tr/weeb.py +0 -0
  80. {weeb_cli-2.16.2 → weeb_cli-2.16.3}/weeb_cli/sdk.py +0 -0
  81. {weeb_cli-2.16.2 → weeb_cli-2.16.3}/weeb_cli/services/__init__.py +0 -0
  82. {weeb_cli-2.16.2 → weeb_cli-2.16.3}/weeb_cli/services/_base.py +0 -0
  83. {weeb_cli-2.16.2 → weeb_cli-2.16.3}/weeb_cli/services/_tracker_base.py +0 -0
  84. {weeb_cli-2.16.2 → weeb_cli-2.16.3}/weeb_cli/services/aniskip.py +0 -0
  85. {weeb_cli-2.16.2 → weeb_cli-2.16.3}/weeb_cli/services/cache.py +0 -0
  86. {weeb_cli-2.16.2 → weeb_cli-2.16.3}/weeb_cli/services/database.py +0 -0
  87. {weeb_cli-2.16.2 → weeb_cli-2.16.3}/weeb_cli/services/dependency_manager.py +0 -0
  88. {weeb_cli-2.16.2 → weeb_cli-2.16.3}/weeb_cli/services/details.py +0 -0
  89. {weeb_cli-2.16.2 → weeb_cli-2.16.3}/weeb_cli/services/discord_rpc.py +0 -0
  90. {weeb_cli-2.16.2 → weeb_cli-2.16.3}/weeb_cli/services/download/__init__.py +0 -0
  91. {weeb_cli-2.16.2 → weeb_cli-2.16.3}/weeb_cli/services/download/context.py +0 -0
  92. {weeb_cli-2.16.2 → weeb_cli-2.16.3}/weeb_cli/services/download/manager.py +0 -0
  93. {weeb_cli-2.16.2 → weeb_cli-2.16.3}/weeb_cli/services/download/queue.py +0 -0
  94. {weeb_cli-2.16.2 → weeb_cli-2.16.3}/weeb_cli/services/download/strategies/__init__.py +0 -0
  95. {weeb_cli-2.16.2 → weeb_cli-2.16.3}/weeb_cli/services/download/strategies/aria2.py +0 -0
  96. {weeb_cli-2.16.2 → weeb_cli-2.16.3}/weeb_cli/services/download/strategies/base.py +0 -0
  97. {weeb_cli-2.16.2 → weeb_cli-2.16.3}/weeb_cli/services/download/strategies/ffmpeg.py +0 -0
  98. {weeb_cli-2.16.2 → weeb_cli-2.16.3}/weeb_cli/services/download/strategies/generic.py +0 -0
  99. {weeb_cli-2.16.2 → weeb_cli-2.16.3}/weeb_cli/services/download/strategies/ytdlp.py +0 -0
  100. {weeb_cli-2.16.2 → weeb_cli-2.16.3}/weeb_cli/services/downloader.py +0 -0
  101. {weeb_cli-2.16.2 → weeb_cli-2.16.3}/weeb_cli/services/error_handler.py +0 -0
  102. {weeb_cli-2.16.2 → weeb_cli-2.16.3}/weeb_cli/services/headless_downloader.py +0 -0
  103. {weeb_cli-2.16.2 → weeb_cli-2.16.3}/weeb_cli/services/logger.py +0 -0
  104. {weeb_cli-2.16.2 → weeb_cli-2.16.3}/weeb_cli/services/notifier.py +0 -0
  105. {weeb_cli-2.16.2 → weeb_cli-2.16.3}/weeb_cli/services/player.py +0 -0
  106. {weeb_cli-2.16.2 → weeb_cli-2.16.3}/weeb_cli/services/progress.py +0 -0
  107. {weeb_cli-2.16.2 → weeb_cli-2.16.3}/weeb_cli/services/scraper.py +0 -0
  108. {weeb_cli-2.16.2 → weeb_cli-2.16.3}/weeb_cli/services/search.py +0 -0
  109. {weeb_cli-2.16.2 → weeb_cli-2.16.3}/weeb_cli/services/shortcuts.py +0 -0
  110. {weeb_cli-2.16.2 → weeb_cli-2.16.3}/weeb_cli/services/stream_validator.py +0 -0
  111. {weeb_cli-2.16.2 → weeb_cli-2.16.3}/weeb_cli/services/tracker.py +0 -0
  112. {weeb_cli-2.16.2 → weeb_cli-2.16.3}/weeb_cli/services/updater.py +0 -0
  113. {weeb_cli-2.16.2 → weeb_cli-2.16.3}/weeb_cli/services/watch.py +0 -0
  114. {weeb_cli-2.16.2 → weeb_cli-2.16.3}/weeb_cli/templates/anilist_error.html +0 -0
  115. {weeb_cli-2.16.2 → weeb_cli-2.16.3}/weeb_cli/templates/anilist_success.html +0 -0
  116. {weeb_cli-2.16.2 → weeb_cli-2.16.3}/weeb_cli/templates/mal_error.html +0 -0
  117. {weeb_cli-2.16.2 → weeb_cli-2.16.3}/weeb_cli/templates/mal_success.html +0 -0
  118. {weeb_cli-2.16.2 → weeb_cli-2.16.3}/weeb_cli/ui/__init__.py +0 -0
  119. {weeb_cli-2.16.2 → weeb_cli-2.16.3}/weeb_cli/ui/header.py +0 -0
  120. {weeb_cli-2.16.2 → weeb_cli-2.16.3}/weeb_cli/ui/menu.py +0 -0
  121. {weeb_cli-2.16.2 → weeb_cli-2.16.3}/weeb_cli/ui/prompt.py +0 -0
  122. {weeb_cli-2.16.2 → weeb_cli-2.16.3}/weeb_cli/utils/__init__.py +0 -0
  123. {weeb_cli-2.16.2 → weeb_cli-2.16.3}/weeb_cli/utils/decorators.py +0 -0
  124. {weeb_cli-2.16.2 → weeb_cli-2.16.3}/weeb_cli/utils/sanitizer.py +0 -0
  125. {weeb_cli-2.16.2 → weeb_cli-2.16.3}/weeb_cli/utils/shortcuts.py +0 -0
  126. {weeb_cli-2.16.2 → weeb_cli-2.16.3}/weeb_cli.egg-info/SOURCES.txt +0 -0
  127. {weeb_cli-2.16.2 → weeb_cli-2.16.3}/weeb_cli.egg-info/dependency_links.txt +0 -0
  128. {weeb_cli-2.16.2 → weeb_cli-2.16.3}/weeb_cli.egg-info/entry_points.txt +0 -0
  129. {weeb_cli-2.16.2 → weeb_cli-2.16.3}/weeb_cli.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: weeb-cli
3
- Version: 2.16.2
3
+ Version: 2.16.3
4
4
  Summary: No browser, no ads, no distractions. Just you and an unparalleled anime viewing experience.
5
5
  Author-email: ewgsta <ewgst@proton.me>
6
6
  License-Expression: GPL-3.0-only
@@ -42,9 +42,15 @@ Provides-Extra: dev
42
42
  Requires-Dist: build; extra == "dev"
43
43
  Requires-Dist: pyinstaller; extra == "dev"
44
44
  Requires-Dist: pytest>=7.0.0; extra == "dev"
45
- Requires-Dist: pytest-cov; extra == "dev"
46
- Requires-Dist: pytest-asyncio; extra == "dev"
47
- Requires-Dist: pytest-mock; extra == "dev"
45
+ Requires-Dist: pytest-cov>=7.1.0; extra == "dev"
46
+ Requires-Dist: pytest-asyncio>=1.3.0; extra == "dev"
47
+ Requires-Dist: pytest-mock>=3.15.1; extra == "dev"
48
+ Provides-Extra: docs
49
+ Requires-Dist: mkdocs>=1.6.1; extra == "docs"
50
+ Requires-Dist: mkdocs-material>=9.7.6; extra == "docs"
51
+ Requires-Dist: mkdocstrings[python]>=1.0.4; extra == "docs"
52
+ Requires-Dist: pymdown-extensions>=10.21.2; extra == "docs"
53
+ Requires-Dist: mkdocs-static-i18n>=1.3.1; extra == "docs"
48
54
  Dynamic: license-file
49
55
 
50
56
  <p align="center">
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "weeb-cli"
7
- version = "2.16.2"
7
+ version = "2.16.3"
8
8
  description = "No browser, no ads, no distractions. Just you and an unparalleled anime viewing experience."
9
9
  readme = "README.md"
10
10
  authors = [{ name = "ewgsta", email = "ewgst@proton.me" }]
@@ -38,7 +38,8 @@ dependencies = [
38
38
  serve = ["flask>=3.0", "pyyaml>=6.0"]
39
39
  serve-restful = ["flask>=3.0", "flask-cors>=4.0"]
40
40
  shortcuts = ["pywin32; sys_platform == 'win32'", "winshell; sys_platform == 'win32'"]
41
- dev = ["build", "pyinstaller", "pytest>=7.0.0", "pytest-cov", "pytest-asyncio", "pytest-mock"]
41
+ dev = ["build", "pyinstaller", "pytest>=7.0.0", "pytest-cov>=7.1.0", "pytest-asyncio>=1.3.0", "pytest-mock>=3.15.1"]
42
+ docs = ["mkdocs>=1.6.1", "mkdocs-material>=9.7.6", "mkdocstrings[python]>=1.0.4", "pymdown-extensions>=10.21.2", "mkdocs-static-i18n>=1.3.1"]
42
43
 
43
44
  [tool.setuptools.packages.find]
44
45
  where = ["."]
@@ -31,7 +31,7 @@ Attributes:
31
31
  __version__ (str): Current version of Weeb CLI.
32
32
  """
33
33
 
34
- __version__ = "2.16.2"
34
+ __version__ = "2.16.3"
35
35
 
36
36
  # SDK exports for easy import
37
37
  from weeb_cli.sdk import WeebSDK, list_providers, get_provider_info
@@ -314,6 +314,16 @@ def _update_trackers(details, slug, ep_num=None):
314
314
  ("Kitsu", kitsu_tracker)
315
315
  ]
316
316
 
317
+ # First, try to sync any pending updates
318
+ for name, tracker in trackers:
319
+ if tracker.is_authenticated():
320
+ try:
321
+ synced_count = tracker.sync_pending()
322
+ if synced_count > 0:
323
+ console.print(f"[green]✓ {name}: {synced_count} {i18n.t('watchlist.pending_synced', 'pending updates synced')}[/green]")
324
+ except Exception as e:
325
+ log_error(f"Failed to sync pending updates for {name}: {e}")
326
+
317
327
  updated = []
318
328
  pending = []
319
329
 
@@ -284,7 +284,8 @@
284
284
  "tracker_updated": "aktualisiert",
285
285
  "tracker_syncing": "wird synchronisiert...",
286
286
  "tracker_pending": "Zu ausstehend hinzugefügt",
287
- "tracker_error": "Tracker-Fehler"
287
+ "tracker_error": "Tracker-Fehler",
288
+ "pending_synced": "ausstehende Aktualisierung(en) synchronisiert"
288
289
  },
289
290
  "errors": {
290
291
  "generic": "Ein Fehler ist aufgetreten",
@@ -284,7 +284,8 @@
284
284
  "tracker_updated": "updated",
285
285
  "tracker_syncing": "syncing...",
286
286
  "tracker_pending": "Added to pending",
287
- "tracker_error": "Tracker error"
287
+ "tracker_error": "Tracker error",
288
+ "pending_synced": "pending update(s) synced"
288
289
  },
289
290
  "errors": {
290
291
  "generic": "An error occurred",
@@ -280,7 +280,8 @@
280
280
  "tracker_updated": "zaktualizowano",
281
281
  "tracker_syncing": "synchronizacja...",
282
282
  "tracker_pending": "Dodano do oczekujących",
283
- "tracker_error": "Błąd trackera"
283
+ "tracker_error": "Błąd trackera",
284
+ "pending_synced": "zsynchronizowano oczekujące aktualizacje"
284
285
  },
285
286
  "errors": {
286
287
  "generic": "Wystąpił błąd",
@@ -284,7 +284,8 @@
284
284
  "tracker_updated": "güncellendi",
285
285
  "tracker_syncing": "senkronize ediliyor...",
286
286
  "tracker_pending": "Bekleyenlere eklendi",
287
- "tracker_error": "Tracker hatası"
287
+ "tracker_error": "Tracker hatası",
288
+ "pending_synced": "bekleyen güncelleme senkronize edildi"
288
289
  },
289
290
  "errors": {
290
291
  "generic": "Bir hata oluştu",
@@ -148,7 +148,18 @@ class LocalLibrary:
148
148
  if not connected_trackers:
149
149
  return
150
150
 
151
- # Try to sync to all trackers
151
+ # First, try to sync any pending updates
152
+ for name, tracker in connected_trackers:
153
+ try:
154
+ synced_count = tracker.sync_pending()
155
+ if synced_count > 0:
156
+ from weeb_cli.services.logger import info
157
+ info(f"{name}: Synced {synced_count} pending updates")
158
+ except Exception as e:
159
+ from weeb_cli.services.logger import error
160
+ error(f"Failed to sync pending updates for {name}: {e}")
161
+
162
+ # Try to sync current episode to all trackers
152
163
  for name, tracker in connected_trackers:
153
164
  tracker.update_progress(anime_title, ep_number, total_episodes)
154
165
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: weeb-cli
3
- Version: 2.16.2
3
+ Version: 2.16.3
4
4
  Summary: No browser, no ads, no distractions. Just you and an unparalleled anime viewing experience.
5
5
  Author-email: ewgsta <ewgst@proton.me>
6
6
  License-Expression: GPL-3.0-only
@@ -42,9 +42,15 @@ Provides-Extra: dev
42
42
  Requires-Dist: build; extra == "dev"
43
43
  Requires-Dist: pyinstaller; extra == "dev"
44
44
  Requires-Dist: pytest>=7.0.0; extra == "dev"
45
- Requires-Dist: pytest-cov; extra == "dev"
46
- Requires-Dist: pytest-asyncio; extra == "dev"
47
- Requires-Dist: pytest-mock; extra == "dev"
45
+ Requires-Dist: pytest-cov>=7.1.0; extra == "dev"
46
+ Requires-Dist: pytest-asyncio>=1.3.0; extra == "dev"
47
+ Requires-Dist: pytest-mock>=3.15.1; extra == "dev"
48
+ Provides-Extra: docs
49
+ Requires-Dist: mkdocs>=1.6.1; extra == "docs"
50
+ Requires-Dist: mkdocs-material>=9.7.6; extra == "docs"
51
+ Requires-Dist: mkdocstrings[python]>=1.0.4; extra == "docs"
52
+ Requires-Dist: pymdown-extensions>=10.21.2; extra == "docs"
53
+ Requires-Dist: mkdocs-static-i18n>=1.3.1; extra == "docs"
48
54
  Dynamic: license-file
49
55
 
50
56
  <p align="center">
@@ -20,9 +20,16 @@ winotify
20
20
  build
21
21
  pyinstaller
22
22
  pytest>=7.0.0
23
- pytest-cov
24
- pytest-asyncio
25
- pytest-mock
23
+ pytest-cov>=7.1.0
24
+ pytest-asyncio>=1.3.0
25
+ pytest-mock>=3.15.1
26
+
27
+ [docs]
28
+ mkdocs>=1.6.1
29
+ mkdocs-material>=9.7.6
30
+ mkdocstrings[python]>=1.0.4
31
+ pymdown-extensions>=10.21.2
32
+ mkdocs-static-i18n>=1.3.1
26
33
 
27
34
  [serve]
28
35
  flask>=3.0
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes