New Features
- **Multiple Clients support in NetGear API:**
* [X] Implemented support for handling any number of Clients simultaneously with a single Server in this mode.
* [X] Added new `multiclient_mode` attribute for enabling this mode easily.
* [X] Built support for `zmq.REQ/zmq.REP` and `zmq.PUB/zmq.SUB` patterns in this mode.
* [X] Implemented ability to receive data from all Client(s) along with frames with `zmq.REQ/zmq.REP` pattern only.
* [X] Updated related CI tests
- **Support for robust Lazy Pirate pattern(auto-reconnection) in NetGear API for both server and client ends:**
* [X] Implemented a algorithm where NetGear rather than doing a blocking receive, will now:
+ Poll the socket and receive from it only when it's sure a reply has arrived.
+ Attempt to reconnect, if no reply has arrived within a timeout period.
+ Abandon the connection if there is still no reply after several requests.
* [X] Implemented its default support for `REQ/REP` and `PAIR` messaging patterns internally.
* [X] Added new `max_retries` and `request_timeout`(in seconds) for handling polling.
* [X] Added `DONTWAIT` flag for interruption-free data receiving.
* [X] Both Server and Client can now reconnect even after a premature termination.
- **Performance Updates for NetGear API:**
* [X] Added default Frame Compression support for Bidirectional frame transmission in Bidirectional mode.
* [X] Added support for `Reducer()` function in Helper.py to aid reducing frame-size on-the-go for more performance.
* [X] Added small delay in `recv()` function at client's end to reduce system load.
* [X] Reworked and Optimized NetGear termination, and also removed/changed redundant definitions and flags.
- **Docs Migration to Mkdocs:**
* [X] Implemented a beautiful, static documentation site based on [MkDocs](https://www.mkdocs.org/) which will then be hosted on GitHub Pages.
* [X] Crafted base mkdocs with third-party elegant & simplistic [`mkdocs-material`](https://squidfunk.github.io/mkdocs-material/) theme.
* [X] Implemented new `mkdocs.yml` for Mkdocs with relevant data.
* [X] Added new `docs` folder to handle markdown pages and its assets.
* [X] Added new Markdown pages(`.md`) to docs folder, which are carefully crafted documents - based on previous Wiki's docs, and some completely new additions.
* [X] Added navigation under tabs for easily accessing each document.
* [X] **New Assets:**
+ Added new assets like _gifs, images, custom scripts, favicons, site.webmanifest etc._ for bringing standard and quality to docs visual design.
+ Designed brand new logo and banner for VidGear Documents.
+ Deployed all assets under separate [*Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International Public License*](https://creativecommons.org/licenses/by-nc-sa/4.0/).
* [X] **Added Required Plugins and Extensions:**
+ Added support for all [pymarkdown-extensions](https://facelessuser.github.io/pymdown-extensions/).
+ Added support for some important `admonition`, `attr_list`, `codehilite`, `def_list`, `footnotes`, `meta`, and `toc` like Mkdocs extensions.
+ Enabled `search`, `minify` and `git-revision-date-localized` plugins support.
+ Added various VidGear's social links to yaml.
+ Added support for `en` _(English)_ language.
* [X] **Auto-Build API Reference with `mkdocstrings:`**
+ Added support for [`mkdocstrings`](https://github.com/pawamoy/mkdocstrings) plugin for auto-building each VidGear's API references.
+ Added python handler for parsing python source-code to `mkdocstrings`.
* [X] **Auto-Deploy Docs with Github Actions:**
+ Implemented Automated Docs Deployment on gh-pages through GitHub Actions workflow.
+ Added new workflow yaml with minimal configuration for automated docs deployment.
+ Added all required python dependencies and environment for this workflow.
+ Added `master` branch on Ubuntu machine to build matrix.
Updates/Improvements
- [X] Added in-built support for bidirectional frames(`NDarray`) transfer in Bidirectional mode.
- [X] Added support for User-Defined compression params in Bidirectional frames transfer.
- [X] Added workaround for `address already in use` bug at client's end.
- [X] Unified Bidirectional and Multi-Clients mode for client's return data transmission.
- [X] Replaced `ValueError` with more suitable `RuntimeError`.
- [X] Updated logging for better readability.
- [X] Added CI test for Multi-Clients mode.
- [X] Reformatted and grouped imports in VidGear.
- [X] Added `Reducer` Helper function CI test.
- [X] Added Reliability tests for both Server and Client end.
- [X] Disabled reliable reconnection for Multi-Clients mode.
- [X] Replaced `os.devnull` with suprocess's inbuilt function.
- [X] Updated README.md, Issue and PR templates with new information and updates.
- [X] Moved `changelog.md` to `/docs` and updated contribution guidelines.
- [X] Improved source-code docs for compatibility with `mkdocstrings`.
- [X] Added additional dependency `mkdocs-exclude`, for excluding files from Mkdocs builds.
- [X] Updated license and compressed images/diagrams.
- [X] Added new CI tests and Bumped Codecov.
- [X] Changed YouTube video URL for CI tests to Creative Commons(CC) video.
- [X] Removed redundant code.
Breaking Updates/Changes
⚠️ _VidGear Docs moved to GitHub Pages, Now Available at https://abhitronix.github.io/vidgear._
- [X] Removed `filter` attribute from `options` parameter in NetGear API.
- [X] Removed `force_terminate` parameter support from NetGear API.
- [X] Disabled additional data of datatype `numpy.ndarray` for Server end in Bidirectional Mode.
Bug-fixes
- [X] Fixed `'NoneType' object is not subscriptable` bug.
- [X] Fixed bugs related to delayed termination in NetGear API.
- [X] Reduced default `request_timeout` value to 4 and also lowered cut-off limit for the same.
- [X] Removed redundant ZMQ context termination and similar variables.
- [X] Added missing VidGear installation in workflow.
- [X] Excluded conflicting assets `README.md` from Mkdocs builds.
- [X] Fixed `pattern` value check bypassed if wrong value is assigned.
- [X] Fixed incorrect handling of additional data transferred in synchronous mode at both Server and Client end.
- [X] Replaced Netgear CI test with more reliable `try-except-final` blocks.
- [X] Updated termination linger to zero at Server's end.
- [X] Fixed `NameError` bug in NetGear API.
- [X] Fixed missing support for compression parameters in Multi-Clients Mode.
- [X] Fixed ZMQ throwing error on termination if all max-tries exhausted.
- [X] Enabled missing support for frame compression in its primary receive mode.
- [X] Fixed several bugs from CI Bidirectional Mode tests.
- [X] Removed or Grouped redundant code for increasing codecov.
- [X] Fixed Mkdocs only accepting Relative paths.
- [X] Fixed broken links in docs.
- [X] Fixed round off error in FPS.
- [X] Many small typos and bugs fixes.
Pull Requests
* PR 129
* PR 130