So this is a bit of a tricky situation. Using Three.js/ReactJS and canvas. 
Scenario: When I click and drag a sphere beyond its boundaries a tooltip will show a warning message over the mouse pointer. When I release the mouse the tooltip will disappear. When I click and drag the sphere back to a position inside the boundaries, the tooltip will not be displayed once inside the boundaries.
Bear in mind this is tied into the state of the app handled by react, and in this instance the tooltip is being updated when the conditions are met and updated in the state. 
The tooltip element is present however, the attributes and content gets updated on a click and hold when the sphere is out of bounds...
using
ActionChains(page.driver).move_to_element_with_offset(sphere_order_panel, -1047, 398).click_and_hold().move_to_element_with_offset(sphere_order_panel, -1633, 265).click_and_hold().perform()
clicks on the element and drags it to the position outside of its boundaries, but the tooltip is NOT updated... i've put a breakpoint on the page once i manually click into the page, my sphere gets snapped to my mouse location (meaning click_and_hold is indeed working... but i check the html and verify that the tooltip is not updated. however if i manually use my mouse and click on the sphere the tooltip will update! is selenium automation not executing the click_and_hold correctly? I don't think this is the case. 
Is there a way to add the mouse pointer to the page using selenium?
Or is there a way to use execute_script() to use javascript on the page to satisfy my conditions to get the tooltip to be updated?
I'm really stuck on this.. and this is a tricky situation (for me at least)
Any help greatly appreciated.
to get around my issue, I had to do this 
chain = ActionChains(page.driver).move_to_element_with_offset(sphere_order_panel, -1047, 398).click_and_hold()
chain = chain.move_to_element_with_offset(sphere_order_panel, -1047, 398) 
chain.perform()
Python Selenium: Show Tooltip on Mouse Pointer (Three.js/React/Canvas)