I am using Python on Windows, though I think this does not matter for my question.
I understand that the 'flags' parameter, which defaults to TA_USER when instantiating a TurboActivate object, controls where LimeLM saves its private information. It is recommended to use TA_SYSTEM and I get all of that, but my question is this:
Given that the API has provided this switch are there some situations where trying to create a TurboActivate object with TA_SYSTEM might fail if the process does not have admin permissions? I know that I can test this, but I would like to know if the LimeLM developers already know that this will occur, as my testing might not uncover all possibilities so it would be good to know what is expected and how it will fail.
Secondly, if it does fail, is an exception thrown or is the return code different or what?
Thirdly, is it recommended to try TA_SYSTEM first, if that fails then try TA_USER? If this is what is recommended, then I would like to suggest that that the API just does this automatically, perhaps if TurboActivate is called with a new flag TA_SYSTEM_THEN_USER to make the API easier to use and I would make this the default.
Finally, I would find it very helpful if the API were fully documented as to what are the exceptions thrown by the different functions. I can't find this information fully described on your website, so if it is there, please provide a link. I am using PyCharm and with many python modules it will display 'Quick Documentation' gleaned from the comments in the source code. For TurboActivate I see only this: ------turboactivate.TurboActivate def __init__(self, guid: Any, flags: int = TA_USER, dat_file_loc: str = "", library_folder: str = "") -> Any-------which is not very helpful. And while I know you have example code, these examples do not fully define the all the usages of the parameters, possible return codes, exceptions thrown, etc. E.g. There is no example of how to use TA_SYSTEM.
Here is an example of the 'Quick Documentation' I see for a method call in the another python module that provides the kind of information I am looking for:---------tifffile.tifffile.TiffWriter def __init__(self, file: Any, bigtiff: bool = False, byteorder: Any = None, append: bool = False, imagej: bool = False) -> AnyOpen a TIFF file for writing.An empty TIFF file is created if the file does not exist, else the file is overwritten with an empty TIFF file unless 'append' is true. Use 'bigtiff=True' when creating files larger than 4 GB.Params:file File name or writable binary stream, such as an open file or BytesIO.bigtiff If True, the BigTIFF format is used.byteorder The endianness of the data in the file. By default, this is the system's native byte order.append If True and 'file' is an existing standard TIFF file, image data and tags are appended to the file. Appending data may corrupt specifically formatted TIFF files such as LSM, STK, ImageJ, or FluoView.imagej If True, write an ImageJ hyperstack compatible file. This format can handle data types uint8, uint16, or float32 and data shapes up to 6 dimensions in TZCYXS order. RGB images (S=3 or S=4) must be uint8. ImageJ's default byte order is big-endian but this implementation uses the system's native byte order by default. ImageJ hyperstacks do not support BigTIFF or compression. The ImageJ file format is undocumented. When using compression, use ImageJ's Bio-Formats import function.
------
Thank you!-Doug