{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":176048362,"defaultBranch":"master","name":"vidgear","ownerLogin":"abhiTronix","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2019-03-17T02:42:42.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/34266896?v=4","public":true,"private":false,"isOrgOwned":false},"refInfo":{"name":"","listCacheKey":"v0:1716225608.0","currentOid":""},"activityList":{"items":[{"before":"46c9897c1257626e6133ba6e57012e41d074fd61","after":"0b0de0b14a7eb8cef72313b8de565772aca57f98","ref":"refs/heads/development","pushedAt":"2024-06-01T19:18:45.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"abhiTronix","name":"Abhishek Thakur","path":"/abhiTronix","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/34266896?s=80&v=4"},"commit":{"message":"☂️ CI: Improved code coverage for StreamGear and WriteGear\n\n⚡️ StreamGear: Discarded invalid audio stream.","shortMessageHtmlLink":"☂️ CI: Improved code coverage for StreamGear and WriteGear"}},{"before":"15c4914a34f338a773e2f82cbb2fe76b6e0677ab","after":"46c9897c1257626e6133ba6e57012e41d074fd61","ref":"refs/heads/development","pushedAt":"2024-06-01T17:49:05.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"abhiTronix","name":"Abhishek Thakur","path":"/abhiTronix","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/34266896?s=80&v=4"},"commit":{"message":"🚑️ StreamGear: Restricted terminating the FFmpeg process to device audio streams only.\n\nWriteGear:\n- ⏪️ Reverted terminating the FFmpeg process in the `close` method, handled by `terminate()`","shortMessageHtmlLink":"🚑️ StreamGear: Restricted terminating the FFmpeg process to device au…"}},{"before":"40881325429a5728e3d13da981b3ea233eec7c48","after":"15c4914a34f338a773e2f82cbb2fe76b6e0677ab","ref":"refs/heads/development","pushedAt":"2024-06-01T16:44:24.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"abhiTronix","name":"Abhishek Thakur","path":"/abhiTronix","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/34266896?s=80&v=4"},"commit":{"message":"⏪️ NetGear: Reverted Handle graceful termination of ZMQ Context.\n\n- 👷 CI: Applied short-circuiting to simplify code in NetGear Tests.","shortMessageHtmlLink":"⏪️ NetGear: Reverted Handle graceful termination of ZMQ Context."}},{"before":"cbff3322e940f9797697dfaa4b159b63af043602","after":"40881325429a5728e3d13da981b3ea233eec7c48","ref":"refs/heads/development","pushedAt":"2024-06-01T16:16:28.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"abhiTronix","name":"Abhishek Thakur","path":"/abhiTronix","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/34266896?s=80&v=4"},"commit":{"message":"💚 CI: Enabled `kill=True` in `close()` in NetGear Tests","shortMessageHtmlLink":"💚 CI: Enabled kill=True in close() in NetGear Tests"}},{"before":"355596af4efa46f5c2b6a78076a7bc7f6f7ef826","after":"cbff3322e940f9797697dfaa4b159b63af043602","ref":"refs/heads/development","pushedAt":"2024-06-01T15:58:44.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"abhiTronix","name":"Abhishek Thakur","path":"/abhiTronix","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/34266896?s=80&v=4"},"commit":{"message":"💚 CI: Fixed typos in NetGear Tests","shortMessageHtmlLink":"💚 CI: Fixed typos in NetGear Tests"}},{"before":"2873e75012e09de66f5c8ca2e94d27de130cbcad","after":"355596af4efa46f5c2b6a78076a7bc7f6f7ef826","ref":"refs/heads/development","pushedAt":"2024-06-01T14:19:03.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"abhiTronix","name":"Abhishek Thakur","path":"/abhiTronix","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/34266896?s=80&v=4"},"commit":{"message":"💚 CI: Fixed skip condition on wrong NetGear test.","shortMessageHtmlLink":"💚 CI: Fixed skip condition on wrong NetGear test."}},{"before":"0a0105cb0074865e9d81ac9cfcc5b17459041e6a","after":"2873e75012e09de66f5c8ca2e94d27de130cbcad","ref":"refs/heads/development","pushedAt":"2024-06-01T14:11:09.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"abhiTronix","name":"Abhishek Thakur","path":"/abhiTronix","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/34266896?s=80&v=4"},"commit":{"message":"📝 Docs: Added warning for Secure Mode issues with PyZMQ `versions > 24.0.1` on Windows.\n\n- 🧑‍💻 Added warnings about Secure Mode issues with PyZMQ versions > 24.0.1 on Windows in NetGear API:\n - 💬 Secure Mode functionality is broken on Windows with PyZMQ versions > 24.0.1 due to changes in `zmq.auth` module.\n - 💬 Users should downgrade to PyZMQ version <= 24.0.1 to use Secure Mode on Windows.\n- 🧑‍💻 Added warnings about Stream copy (`-vcodec copy`) is not compatible with Real-time Frames Mode as this mode requires re-encoding of incoming frames in StreamGear API.\n - 💡 Refined warning message for stream copy compatibility for clarity.\n\nCI:\n- 👷 Added a skip condition in `test_netgear.py` for Windows platform when PyZMQ version > 24.0.1:\n - Ensured relevant tests are skipped on incompatible PyZMQ versions to prevent test failures.\n\nNetGear:\n- ⏪️ Reverted Handle graceful termination of ZMQ Context.","shortMessageHtmlLink":"📝 Docs: Added warning for Secure Mode issues with PyZMQ `versions > 2…"}},{"before":"3fbd610d40db6c9337962662cf996a5d7178bf81","after":"0a0105cb0074865e9d81ac9cfcc5b17459041e6a","ref":"refs/heads/development","pushedAt":"2024-06-01T07:01:59.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"abhiTronix","name":"Abhishek Thakur","path":"/abhiTronix","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/34266896?s=80&v=4"},"commit":{"message":"⚡️NetGear: Handle graceful termination of ZMQ Context\n\n- ⏪️ Reverted Isolated contexts for Secure Modes","shortMessageHtmlLink":"⚡️NetGear: Handle graceful termination of ZMQ Context"}},{"before":"e7f887a47390037f37101f403aeb01d379b94580","after":"3fbd610d40db6c9337962662cf996a5d7178bf81","ref":"refs/heads/development","pushedAt":"2024-06-01T06:46:11.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"abhiTronix","name":"Abhishek Thakur","path":"/abhiTronix","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/34266896?s=80&v=4"},"commit":{"message":"⚡️NetGear: Handle graceful termination of ZMQ AuthenticationThread","shortMessageHtmlLink":"⚡️NetGear: Handle graceful termination of ZMQ AuthenticationThread"}},{"before":"428621dac7cfd19185393c57b6d4360f74174ec2","after":"e7f887a47390037f37101f403aeb01d379b94580","ref":"refs/heads/development","pushedAt":"2024-06-01T06:00:18.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"abhiTronix","name":"Abhishek Thakur","path":"/abhiTronix","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/34266896?s=80&v=4"},"commit":{"message":"🚑️ NetGear: Isolated contexts for Secure Modes\n\n- 🐛 Updated logic to use `zmq.Context()` instead of `zmq.Context.instance()` to isolate contexts in order to fix `zmq.error.ZMQError: Address in use (addr='inproc://zeromq.zap.01')` bug.\n- ♻️ Refactored code.\n\nCI:\n- 💚 Fixed typos in NetGear Tests method names.","shortMessageHtmlLink":"🚑️ NetGear: Isolated contexts for Secure Modes"}},{"before":"b9b0a4b6a2c9f54f131465a7fb5fc1e0422eb6ba","after":"428621dac7cfd19185393c57b6d4360f74174ec2","ref":"refs/heads/development","pushedAt":"2024-05-31T18:15:54.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"abhiTronix","name":"Abhishek Thakur","path":"/abhiTronix","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/34266896?s=80&v=4"},"commit":{"message":"🏗️ StreamGear: Fixed stream `copy` incompatible with Real-time Frames Mode\n\n🚑️ This commit addresses an bug where the `-vcodec copy` parameter was\nincorrectly defined when using the Real-time Frames Mode in StreamGear.\nStream copy is not compatible with this mode since it requires encoding\nthe frames before streaming. Additionally, If the Real-time Frames Mode\nis active and `-vcodec copy` is specified, a warning log message is printed\nto notify the user that the stream copy parameter is being discarded.","shortMessageHtmlLink":"🏗️ StreamGear: Fixed stream copy incompatible with Real-time Frames…"}},{"before":"6b2532270571a7e9dc8d95aa88411071b17f16ec","after":"b9b0a4b6a2c9f54f131465a7fb5fc1e0422eb6ba","ref":"refs/heads/development","pushedAt":"2024-05-31T17:25:17.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"abhiTronix","name":"Abhishek Thakur","path":"/abhiTronix","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/34266896?s=80&v=4"},"commit":{"message":"🚑️ StreamGear: Fixed `UnboundLocalError` for `seg_duration` in `generate_dash_stream` method.\n\n- 🔊 Updated logging message format in `evaluate_streams` method of for consistency.\n\nWriteGear:\n- 🐛 Fixed dictionary comprehension logic to strip only string values.\n\nCI:\n- 💚 Fixed expected duration value in parameterized test case from `8` to `8.44` since `test_extract_time` function now supports floating point values.","shortMessageHtmlLink":"🚑️ StreamGear: Fixed UnboundLocalError for seg_duration in `gener…"}},{"before":"abeb9550ad54707e352a178f745657715f09bef6","after":"6b2532270571a7e9dc8d95aa88411071b17f16ec","ref":"refs/heads/development","pushedAt":"2024-05-31T16:56:52.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"abhiTronix","name":"Abhishek Thakur","path":"/abhiTronix","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/34266896?s=80&v=4"},"commit":{"message":"🚑️ Maintenance: Handled signal interruption for non-Windows systems\n\n💬 The `close()` methods in StreamGear and WriteGear were sending the\n`CTRL_BREAK_EVENT` signal to terminate the underlying process, which only\nworks on Windows systems. This commit modifies the code to send the\nappropriate signal based on the operating system:\n\n- For Windows, it sends the `CTRL_BREAK_EVENT` signal\n- For non-Windows systems, it sends the `SIGINT` signal","shortMessageHtmlLink":"🚑️ Maintenance: Handled signal interruption for non-Windows systems"}},{"before":"bfc521d824b64268db23976701be4f34c87bfea0","after":"abeb9550ad54707e352a178f745657715f09bef6","ref":"refs/heads/development","pushedAt":"2024-05-31T15:10:21.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"abhiTronix","name":"Abhishek Thakur","path":"/abhiTronix","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/34266896?s=80&v=4"},"commit":{"message":"☂️ CI: Improved code coverage for StreamGear\n\n- 🔥 Removed unused imports.","shortMessageHtmlLink":"☂️ CI: Improved code coverage for StreamGear"}},{"before":"20dec0accda1ca9a850d91bcec194184176f1b70","after":"bfc521d824b64268db23976701be4f34c87bfea0","ref":"refs/heads/development","pushedAt":"2024-05-30T19:10:50.000Z","pushType":"push","commitsCount":12,"pusher":{"login":"abhiTronix","name":"Abhishek Thakur","path":"/abhiTronix","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/34266896?s=80&v=4"},"commit":{"message":"♻️ Docs: Refactored the StreamGear API Parameters documentation to enhance clarity and readability\n\n- 🧑‍💻 Simplified and clarified descriptions for `output`, `format`, `custom_ffmpeg`, and `stream_params` parameters.\n- 📝 Improved examples for defining output paths, filenames, and URLs.\n- 🚸 Enhanced warnings, tips, and information admonitions for better user guidance.\n- 🎨 Reformatted code examples to provide clearer usage patterns.\n- ✏️ Updated formatting and grammar for consistency and precision.","shortMessageHtmlLink":"♻️ Docs: Refactored the StreamGear API Parameters documentation to en…"}},{"before":null,"after":"20dec0accda1ca9a850d91bcec194184176f1b70","ref":"refs/heads/development","pushedAt":"2024-05-20T17:20:08.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"abhiTronix","name":"Abhishek Thakur","path":"/abhiTronix","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/34266896?s=80&v=4"},"commit":{"message":"🔧 Deprecate on_shutdown in favor of lifespan (Fixes #397) [#398]\n\n- 🏗️ Replaced deprecated Starlette's `on_shutdown` parameter with an async context manager `lifespan` in WebGear and WebGear_RTC APIs.\r\n- 🚚 Moved shutdown logic for VideoGear and peer RTC connections to this new `lifespan` context manager.\r\n- 📦️ Added new `contextlib` import for using `asynccontextmanager`.\r\n\r\n### NetGear_Async API:\r\n- 🩹 Fixed event loop handling \r\n - ⚡️Modified `__init__` method to handle event loop more robustly:\r\n - Try to get the running event loop using `asyncio.get_running_loop()`\r\n - If no running event loop found, create a new one with `asyncio.new_event_loop()`\r\n - Log if creating a new event loop\r\n - 🧑‍💻 Changed launch method to use `self.loop.create_task()` instead of `asyncio.ensure_future()`\r\n - Ensures the task is created using the correct event loop instance.\r\n- 🚑️ Fix event loop initialization on Windows platforms \r\n - ⚡️ Moved the event loop initialization code to an earlier point before setting event loop policy to ensure it is set up correctly before selecting `WindowsSelectorEventLoop` policy.\r\n - 💬 Background: On Windows, vidgear requires the `WindowsSelectorEventLoop`, but Python 3.8 and above defaults to the `ProactorEventLoop` which is not compatible.\r\n - 🔥 Removed redundant python version check to set `WindowsSelectorEventLoop` policy, as minimum supported version is already `3.8`.\r\n - 💡 Updated code comments.\r\n- ⚡️ Move event loop setup and policy assignment to the beginning of `__init__` before zmq Context creation.\r\n\r\n### PiGear API: \r\n- 🚑️ Modify PiGear class behavior when `enforce_legacy_picamera=True` on unsupported system\r\n - ⚡️ Instead of silently disabling `picamera2` API directly, PiGear now raises an error if `picamera` is unavailable or unsupported\r\n - 🥅 Prevented incorrect initialization of `PiGear` class on unsupported 64-bit OS systems.\r\n\r\n### Docs: \r\n- 📝 Added workaround for 'AttributeError: 'DXCamera' object has no attribute 'is_capturing'' error on Windows.\r\n- 💄 Added new `screengear_error11.png` asset.\r\n- 📝 Update README.md with changes to JPEG compression options\r\n - ✏️ Replaces deprecated options (`frame_jpeg_quality`, `frame_jpeg_optimize`, `frame_jpeg_progressive`) with their newer equivalents (`jpeg_compression_quality,` `jpeg_compression_fastdct`, `jpeg_compression_fastupsample`) in WebGear usage example.\r\n- 🐛 Replaced buggy kofi widget with a button image in index.md\r\n- 🏗️ Remove script tags from main.html and use a custom hook for adding JS\r\n- 🔥 Remove site.webmanifest file\r\n- 💄 Update mkdocs.yml with new configuration settings:\r\n - Set edit_uri for GitHub edit links\r\n - Add new theme features like content actions, tooltips, etc.\r\n - Update palette settings for light/dark mode\r\n - Enable new markdown extensions\r\n - Add custom JS hook for adding scripts on certain pages\r\n- ♻️ Other minor tweaks and cleanups\r\n- 🧑‍💻 Refactored all APIs and bonus examples to use linenums and hl_lines\r\n - Makes it easier to highlight specific lines in code blocks\r\n- 📝 Updated remaining code examples for picamera2 and legacy picamera backends\r\n- 🐛 Replaced buggy kofi widget with a button image in `help.md`\r\n- 💄 Update announcement icon in `main.html`\r\n- 💄 Change system mode toggle icon and name in `mkdocs.yml`\r\n- 📝 Add failure warning in various docs about `picamera` incompatibility on 64-bit OS\r\n\r\n### CI: \r\n- 💚 Deprecated event_loop fixture overrides. \r\n - 👷 Added new recommended approach of using `pytest.mark.asyncio(scope=\"module\")` to mark all WebGear_RTC and NetGear_Async tests as asynchronous and utilize the same event loop throughout the module.\r\n - 🗑️ Deprecated custom `event_loop` fixture overrides in WebGear_RTC and NetGear_Async tests.\r\n - 🔥 Removed redundant `pytest.mark.asyncio` decorators from several test functions.\r\n- 💚 Refactor event loop handling \r\n - 👷 Add a new event_loop_policy fixture for pytest to override the event loop policy\r\n - 🔊 Log the event loop being used for debugging\r\n - 🔧 Mark the new fixture in relevant test functions with pytest.mark.asyncio(scope=\"module\")\r\n - ♻️ Remove unused imports and code cleanup","shortMessageHtmlLink":"🔧 Deprecate on_shutdown in favor of lifespan (Fixes #397) [#398]"}},{"before":"512301db277ce8106df3fe763e6ca820b16f0627","after":"89e19d489d20ac679080dfce43c5a5217ed81f8c","ref":"refs/heads/gh-pages","pushedAt":"2024-05-20T17:19:01.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"github-actions[bot]","name":null,"path":"/apps/github-actions","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/15368?s=80&v=4"},"commit":{"message":"Deployed 20dec0ac to v0.3.3-dev with MkDocs 1.6.0 and mike 2.1.1","shortMessageHtmlLink":"Deployed 20dec0a to v0.3.3-dev with MkDocs 1.6.0 and mike 2.1.1"}},{"before":"6285688e5d2d4c924ca9f37095c39ab130004c63","after":null,"ref":"refs/heads/development","pushedAt":"2024-05-20T17:17:49.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"abhiTronix","name":"Abhishek Thakur","path":"/abhiTronix","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/34266896?s=80&v=4"}},{"before":"e497ac2cf7da60c7ff4fe061a053f00d5331b0cb","after":"20dec0accda1ca9a850d91bcec194184176f1b70","ref":"refs/heads/testing","pushedAt":"2024-05-20T17:17:43.000Z","pushType":"pr_merge","commitsCount":10,"pusher":{"login":"abhiTronix","name":"Abhishek Thakur","path":"/abhiTronix","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/34266896?s=80&v=4"},"commit":{"message":"🔧 Deprecate on_shutdown in favor of lifespan (Fixes #397) [#398]\n\n- 🏗️ Replaced deprecated Starlette's `on_shutdown` parameter with an async context manager `lifespan` in WebGear and WebGear_RTC APIs.\r\n- 🚚 Moved shutdown logic for VideoGear and peer RTC connections to this new `lifespan` context manager.\r\n- 📦️ Added new `contextlib` import for using `asynccontextmanager`.\r\n\r\n### NetGear_Async API:\r\n- 🩹 Fixed event loop handling \r\n - ⚡️Modified `__init__` method to handle event loop more robustly:\r\n - Try to get the running event loop using `asyncio.get_running_loop()`\r\n - If no running event loop found, create a new one with `asyncio.new_event_loop()`\r\n - Log if creating a new event loop\r\n - 🧑‍💻 Changed launch method to use `self.loop.create_task()` instead of `asyncio.ensure_future()`\r\n - Ensures the task is created using the correct event loop instance.\r\n- 🚑️ Fix event loop initialization on Windows platforms \r\n - ⚡️ Moved the event loop initialization code to an earlier point before setting event loop policy to ensure it is set up correctly before selecting `WindowsSelectorEventLoop` policy.\r\n - 💬 Background: On Windows, vidgear requires the `WindowsSelectorEventLoop`, but Python 3.8 and above defaults to the `ProactorEventLoop` which is not compatible.\r\n - 🔥 Removed redundant python version check to set `WindowsSelectorEventLoop` policy, as minimum supported version is already `3.8`.\r\n - 💡 Updated code comments.\r\n- ⚡️ Move event loop setup and policy assignment to the beginning of `__init__` before zmq Context creation.\r\n\r\n### PiGear API: \r\n- 🚑️ Modify PiGear class behavior when `enforce_legacy_picamera=True` on unsupported system\r\n - ⚡️ Instead of silently disabling `picamera2` API directly, PiGear now raises an error if `picamera` is unavailable or unsupported\r\n - 🥅 Prevented incorrect initialization of `PiGear` class on unsupported 64-bit OS systems.\r\n\r\n### Docs: \r\n- 📝 Added workaround for 'AttributeError: 'DXCamera' object has no attribute 'is_capturing'' error on Windows.\r\n- 💄 Added new `screengear_error11.png` asset.\r\n- 📝 Update README.md with changes to JPEG compression options\r\n - ✏️ Replaces deprecated options (`frame_jpeg_quality`, `frame_jpeg_optimize`, `frame_jpeg_progressive`) with their newer equivalents (`jpeg_compression_quality,` `jpeg_compression_fastdct`, `jpeg_compression_fastupsample`) in WebGear usage example.\r\n- 🐛 Replaced buggy kofi widget with a button image in index.md\r\n- 🏗️ Remove script tags from main.html and use a custom hook for adding JS\r\n- 🔥 Remove site.webmanifest file\r\n- 💄 Update mkdocs.yml with new configuration settings:\r\n - Set edit_uri for GitHub edit links\r\n - Add new theme features like content actions, tooltips, etc.\r\n - Update palette settings for light/dark mode\r\n - Enable new markdown extensions\r\n - Add custom JS hook for adding scripts on certain pages\r\n- ♻️ Other minor tweaks and cleanups\r\n- 🧑‍💻 Refactored all APIs and bonus examples to use linenums and hl_lines\r\n - Makes it easier to highlight specific lines in code blocks\r\n- 📝 Updated remaining code examples for picamera2 and legacy picamera backends\r\n- 🐛 Replaced buggy kofi widget with a button image in `help.md`\r\n- 💄 Update announcement icon in `main.html`\r\n- 💄 Change system mode toggle icon and name in `mkdocs.yml`\r\n- 📝 Add failure warning in various docs about `picamera` incompatibility on 64-bit OS\r\n\r\n### CI: \r\n- 💚 Deprecated event_loop fixture overrides. \r\n - 👷 Added new recommended approach of using `pytest.mark.asyncio(scope=\"module\")` to mark all WebGear_RTC and NetGear_Async tests as asynchronous and utilize the same event loop throughout the module.\r\n - 🗑️ Deprecated custom `event_loop` fixture overrides in WebGear_RTC and NetGear_Async tests.\r\n - 🔥 Removed redundant `pytest.mark.asyncio` decorators from several test functions.\r\n- 💚 Refactor event loop handling \r\n - 👷 Add a new event_loop_policy fixture for pytest to override the event loop policy\r\n - 🔊 Log the event loop being used for debugging\r\n - 🔧 Mark the new fixture in relevant test functions with pytest.mark.asyncio(scope=\"module\")\r\n - ♻️ Remove unused imports and code cleanup","shortMessageHtmlLink":"🔧 Deprecate on_shutdown in favor of lifespan (Fixes #397) [#398]"}},{"before":"89b1c6580d5fee39235e995b606fe6c94b918091","after":"6285688e5d2d4c924ca9f37095c39ab130004c63","ref":"refs/heads/development","pushedAt":"2024-05-20T15:01:20.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"abhiTronix","name":"Abhishek Thakur","path":"/abhiTronix","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/34266896?s=80&v=4"},"commit":{"message":"🚑️ PiGear: Modify `PiGear` class behavior when `enforce_legacy_picamera=True` on unsupported system\n\n- ⚡️ Instead of silently disabling `picamera2` API directly, PiGear now raises an error if `picamera` is unavailable or unsupported\n- 🥅 Prevented incorrect initialization of `PiGear` class on unsupported 64-bit OS systems.\n\nDocs:\n- 📝 Add failure warning in various docs about `picamera` incompatibility on 64-bit OS","shortMessageHtmlLink":"🚑️ PiGear: Modify PiGear class behavior when `enforce_legacy_picame…"}},{"before":"d035e4acde892673c8e734ac96f4da153a735433","after":"89b1c6580d5fee39235e995b606fe6c94b918091","ref":"refs/heads/development","pushedAt":"2024-05-19T18:08:11.000Z","pushType":"push","commitsCount":3,"pusher":{"login":"abhiTronix","name":"Abhishek Thakur","path":"/abhiTronix","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/34266896?s=80&v=4"},"commit":{"message":"♻️ Docs: Refactored documentation\n\n- 🧑‍💻 Refactored all APIs and bonus examples to use linenums and hl_lines\n - Makes it easier to highlight specific lines in code blocks\n- 📝 Updated remaining code examples for picamera2 and legacy picamera backends\n- 🐛 Replaced buggy kofi widget with a button image in `help.md`\n- 💄 Update announcement icon in `main.html`\n- 💄 Change system mode toggle icon and name in `mkdocs.yml`","shortMessageHtmlLink":"♻️ Docs: Refactored documentation"}},{"before":"993cdea66b0e4ddba20d2f506abef69a43fc0c1a","after":"d035e4acde892673c8e734ac96f4da153a735433","ref":"refs/heads/development","pushedAt":"2024-05-18T13:39:43.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"abhiTronix","name":"Abhishek Thakur","path":"/abhiTronix","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/34266896?s=80&v=4"},"commit":{"message":"🚑️ NetGear_Async: Fix event loop initialization on Windows platforms\n\n- ⚡️ Moved the event loop initialization code to an earlier point before setting event loop policy to ensure it is set up correctly before selecting `WindowsSelectorEventLoop` policy.\n - 💬 Background: On Windows, vidgear requires the `WindowsSelectorEventLoop`, but Python 3.8 and above defaults to the `ProactorEventLoop` which is not compatible.\n- 🔥 Removed redundant python version check to set `WindowsSelectorEventLoop` policy, as minimum supported version is already `3.8`.\n- 💡 Updated code comments.","shortMessageHtmlLink":"🚑️ NetGear_Async: Fix event loop initialization on Windows platforms"}},{"before":"08b583d02a7fc27859bd98ad77713e42e971006f","after":"993cdea66b0e4ddba20d2f506abef69a43fc0c1a","ref":"refs/heads/development","pushedAt":"2024-05-16T19:42:31.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"abhiTronix","name":"Abhishek Thakur","path":"/abhiTronix","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/34266896?s=80&v=4"},"commit":{"message":"🩹 NetGear_Async: Fixed event loop handling\n\n- ⚡️Modified `__init__` method to handle event loop more robustly:\n - Try to get the running event loop using `asyncio.get_running_loop()`\n - If no running event loop found, create a new one with `asyncio.new_event_loop()`\n - Log if creating a new event loop\n- 🧑‍💻 Changed launch method to use `self.loop.create_task()` instead of `asyncio.ensure_future()`\n - Ensures the task is created using the correct event loop instance.","shortMessageHtmlLink":"🩹 NetGear_Async: Fixed event loop handling"}},{"before":"e497ac2cf7da60c7ff4fe061a053f00d5331b0cb","after":"08b583d02a7fc27859bd98ad77713e42e971006f","ref":"refs/heads/development","pushedAt":"2024-05-15T16:39:57.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"abhiTronix","name":"Abhishek Thakur","path":"/abhiTronix","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/34266896?s=80&v=4"},"commit":{"message":"⚡️ Maintenance: Refactor WebGear and WebGear RTC shutdown handling\n\n- 🏗️ Replaced deprecated Starlette's `on_shutdown` parameter with an async context manager `lifespan` in WebGear and WebGear_RTC APIs.\n- 🚚 Moved shutdown logic for VideoGear and peer RTC connections to this new `lifespan` context manager.\n- 📦️ Added new `contextlib` import for using `asynccontextmanager`.\n\nDocs:\n- 📝 Update README.md with changes to JPEG compression options\n - ✏️ Replaces deprecated options (`frame_jpeg_quality`, `frame_jpeg_optimize`, `frame_jpeg_progressive`) with their newer equivalents (`jpeg_compression_quality,` `jpeg_compression_fastdct`, `jpeg_compression_fastupsample`) in WebGear usage example.","shortMessageHtmlLink":"⚡️ Maintenance: Refactor WebGear and WebGear RTC shutdown handling"}},{"before":null,"after":"e497ac2cf7da60c7ff4fe061a053f00d5331b0cb","ref":"refs/heads/development","pushedAt":"2024-05-13T18:57:45.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"abhiTronix","name":"Abhishek Thakur","path":"/abhiTronix","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/34266896?s=80&v=4"},"commit":{"message":"👷 CI: Update `deploy_docs` workflow to use alias copy instead of no-redirect\n\n- 💚 Change mike deploy commands in `deploy_docs.yml` to use `--alias-type=copy`\n instead of `--no-redirect` for release, stable, and dev deployments\n- 💬 Update `main.html` announcement text with minor wording changes\n- ♿️ Set default version in `mkdocs.yml` to 'latest'","shortMessageHtmlLink":"👷 CI: Update deploy_docs workflow to use alias copy instead of no-r…"}},{"before":"937371504044000aef8c458e9947bf6a517da910","after":"512301db277ce8106df3fe763e6ca820b16f0627","ref":"refs/heads/gh-pages","pushedAt":"2024-05-13T18:50:19.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"github-actions[bot]","name":null,"path":"/apps/github-actions","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/15368?s=80&v=4"},"commit":{"message":"Deployed e497ac2c to v0.3.3-dev with MkDocs 1.6.0 and mike 2.1.1","shortMessageHtmlLink":"Deployed e497ac2 to v0.3.3-dev with MkDocs 1.6.0 and mike 2.1.1"}},{"before":"e119365689b5710ac50cda0b17e0df2e8ee2f771","after":"e497ac2cf7da60c7ff4fe061a053f00d5331b0cb","ref":"refs/heads/testing","pushedAt":"2024-05-13T18:48:51.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"abhiTronix","name":"Abhishek Thakur","path":"/abhiTronix","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/34266896?s=80&v=4"},"commit":{"message":"👷 CI: Update `deploy_docs` workflow to use alias copy instead of no-redirect\n\n- 💚 Change mike deploy commands in `deploy_docs.yml` to use `--alias-type=copy`\n instead of `--no-redirect` for release, stable, and dev deployments\n- 💬 Update `main.html` announcement text with minor wording changes\n- ♿️ Set default version in `mkdocs.yml` to 'latest'","shortMessageHtmlLink":"👷 CI: Update deploy_docs workflow to use alias copy instead of no-r…"}},{"before":"77704896b6b107d748fd4ee816b49fd96eb4edf1","after":null,"ref":"refs/heads/development","pushedAt":"2024-05-13T17:59:54.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"abhiTronix","name":"Abhishek Thakur","path":"/abhiTronix","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/34266896?s=80&v=4"}},{"before":"a4efa4b343a79718275b889d459f0ce210d5d561","after":"e119365689b5710ac50cda0b17e0df2e8ee2f771","ref":"refs/heads/testing","pushedAt":"2024-05-13T17:59:44.000Z","pushType":"pr_merge","commitsCount":16,"pusher":{"login":"abhiTronix","name":"Abhishek Thakur","path":"/abhiTronix","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/34266896?s=80&v=4"},"commit":{"message":"feat(PiGear): Official Support for Picamera2 API (Fixes #342) [PR #392]\n\n🚀 This massive update brings official support for the new Picamera2 API, unlocking powerful features for Raspberry Pi Camera Modules and limited USB camera support. \r\n\r\n### ✨Key PiGear Enhancements include:\r\n- **Seamless Python wrapper:** A robust wrapper around Picamera2 API library simplifies integration with minimal code changes for existing PiGear users.\r\n- **Enhanced camera control:** Leverages libcamera API under the hood for Raspberry Pi Camera Modules.\r\n- **Existing compatibility:** Maintains compatibility with PiGear's existing super-charged multi-threaded and colorspace manipulation framework.\r\n- **Proper Resource management:** Ensures proper resource release during PiGear termination.\r\n- **USB camera support (limited):** Provides basic functionality for USB webcams. PiGear could accurately differentiates between USB and Raspberry Pi cameras using metadata.\r\n- **Backward compatibility:** Seamlessly switches to the legacy Picamera library backend if Picamera2 is unavailable.\r\n- **Standalone functionalities:** Standalone functionalities for both legacy `picamera` and newer `picamera2` backends for clarity.\r\n- **Document Overhaul:** * \r\n- **Advanced optional parameters handling:** Handles camera configurational parameters and user-defined settings for various camera types.\r\n\t- **New optional configurationalparameters:** Currently Supports \"sensor\", \"format\", \"controls\", \"transform\", \"stride\", \"buffer_count\", and \"queue\" with sanity checks. Seperated Raspberry Pi camera module exclusive and Unified USB cameras supported optional parameters.\r\n\t- **New user-defined optional parameters:** Such as `auto_align_output_config`, `enable_verbose_logs`, and more.\r\n- **Additional changes:**\r\n\t* Logging optimization with warning for common libcamera messages\r\n\t* Lowered `framerate` minimum value to `0.0`.\r\n\t* Moved `sensor` optional parameter to commonly supported picamera2 configurational parameters.\r\n\t* Removed unsupported `bit_depth` optional parameters\r\n\t* Updated PiGear API tagline and introduction \r\n\t* Fixed colorspace typo bug\r\n\t* Fixed UnboundLocalError bug for 'picamera2' variable assigment.\r\n\t* Fixed UnboundLocalError bug for 'queue' variable assignment.\r\n\r\n### 📝 Documentation updates:\r\n* Added a warning advising users to disable common `libcamera` messages when logging is disabled.\r\n* Updated Zenodo badge and BibTeX entry\r\n* Added complete Picamera2 library installation instructions for `pip` and from source as a dependency. \r\n* Updated Picamera2 installation instructions _(including `apt`, `pip`, pre-installation on Raspberry Pi images, and compatibility warnings)_\r\n* Moved legacy Picamera library installation instructions to an admonition.\r\n* Removed Importing section from overview to avoid confusion in PiGear.\r\n* Overhauled mkdocs theme.\r\n * Added `unrecognized_links: ignore` to `mkdocs.yml` for validations.\r\n * Added new `features` to mkdocs.yml \r\n\t* Added custom admonition icons to mkdocs.yml \r\n\t* Migrated to new Google Analytics 4 in mkdocs.yml \r\n\t* Added new `git-authors` plugin in mkdocs.yml \r\n\t* Added new tables markdown extension \r\n\t* Added custom fences to `pymdownx.superfences` markdown extension \r\n\t* Added `line_spans: __span` and `pygments_lang_class: true` parameters to `pymdownx.highlight` markdown extension \r\n\t* Added `normalize_issue_symbols: true` to `pymdownx.magiclink` markdown extension \r\n\t* Added new mkdocs feature dependency mkdocs-git-authors-plugin\r\n\t* Replaced depreciated `materialx `with supported emoji extension.\r\n\t* Replaced permalink icon with default one \r\n* Added missing version contributors to `changelog.md`\r\n* Added new icons to make headings more readable\r\n* Replaced unsupported admonitions with supported ones \r\n* Removed all custom admonition icons and color CSS from `custom.css`\r\n* Removed Twitter section from help and docs site metadata\r\n* Fixed Ko-fi sponsorship heart hover effect in footer \r\n\t* Replaced `twemoji` heart emoji with `heart-pulse` fontawesome SVG \r\n* Fixed titles and indentations in various admonitions.\r\n* Removed Gitter community chat sidecard JS file.\r\n* Redefined spacing between sections \r\n* Fixed various typos, code comments, and hyperlinks URLs. \r\n\r\n### 🧑‍💻 Maintenance Updates:\r\n* Moved logging enablement before version logging for consistency in vidgear APIs.\r\n* Removed redundant boolean assignment for various APIs internal logging.\r\n* Simplified conditional statements and assignments using short-circuiting, Boolean operations, and ternary operators.\r\n* Refactored return data handling in netgear_async.py\r\n* Refactored vidgear code to improve readability, maintainability, and performance\r\n* Added `.cache` directory to `.gitignore` \r\n* Updated vidgear library version to `v0.3.3`\r\n* Dropped legacy picamera dependency in Setup.py \r\n* Improved code efficiency with short-circuiting and formatting\r\n* Updated logging practices to be more developer-friendly\r\n* Updated code highlighting in NetGear_Async Docs\r\n* Added patch for substring index bug in `get_supported_demuxers` helper method.\r\n* Updated code comments \r\n\r\n### 👷CI Updates:\r\n* Temporarily removed PiGear API from code coverage due to hardware limitations \r\n* Fixed `pip install` hash bug in Azure Pipelines CI.","shortMessageHtmlLink":"feat(PiGear): Official Support for Picamera2 API (Fixes #342) [PR #392]"}},{"before":"a73cd45ed5508fced4af7c0cc98a465a086e6119","after":"77704896b6b107d748fd4ee816b49fd96eb4edf1","ref":"refs/heads/development","pushedAt":"2024-05-13T14:59:22.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"abhiTronix","name":"Abhishek Thakur","path":"/abhiTronix","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/34266896?s=80&v=4"},"commit":{"message":"💚 CI: Fixing `pip install` hash bug in Azure Pipeline.","shortMessageHtmlLink":"💚 CI: Fixing pip install hash bug in Azure Pipeline."}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAEWdzz4AA","startCursor":null,"endCursor":null}},"title":"Activity · abhiTronix/vidgear"}