Add PyTangoThread class

Hello PyTango maintainers,

I'm a developer on SKAO, and I've got lots of with EnsureOmniTread()s throughout my code base. I see in latest versions of PyTango we have the PyTangoThreadPoolExecutor, which is really great as it gets rid of a lot of my calls, however I've still got some for my threading.Threads. This MR just adds another util alongside the PyTangoThreadPoolExecutor which wraps the invocation threading.Thread in EnsureOmniThread() so I can remove the direct calls in my codebase.

I've had to override the private _bootstrap_inner() method rather than the public run() method in order to support both APIs for usual threading.Thread usage, whereby you either supply a target to the initialiser, or subclass and override the run() method.

I've added a unit test to show that with both APIs the PyTangoThread runs the task in dummy OmniOrb.

The second commit fixes the Readme.md, the how-to-contribute link I think was broken, so I've updated it. The content was very good though! I was able to get the wheel built and the tests running very quickly.

Merge request reports

Loading