server-client-python icon indicating copy to clipboard operation
server-client-python copied to clipboard

Type hint issues

Open pierresouchay opened this issue 3 years ago • 6 comments

Describe the bug Recently tried to bump tableauserverclient from version 0.16.0 to 0.18.0

Versions Details of your environment, including:

  • Tableau Server version : Tableau Online
  • Python version: 3.9
  • TSC library version: 0.18.0
  • mypy version: mypy 0.942

To Reproduce Create this simplistic file:

#!/usr/bin/env/python

import os

import tableauserverclient as TSC


tableau_auth = TSC.TableauAuth(os.environ["USERNAME"], os.environ["PASSWORD"], site_id=os.environ["SITE_ID"])
server = TSC.Server("https://dub01.online.tableau.com")
my_group = TSC.GroupItem(os.environ["GROUP_ITEM"])

Run mypy test_script.py --ignore-missing-imports --strict

Results

mypy test_script.py --ignore-missing-imports --strict 
test_script.py:8: error: Module has no attribute "TableauAuth"
test_script.py:9: error: Module has no attribute "Server"
test_script.py:10: error: Module has no attribute "GroupItem"

=> this is simplistic and mypy complains

I suspect the typed.py file is not at the right place or the imports are not being set correctly In the init.py file

Maybe https://github.com/tableau/server-client-python/issues/991 not being implemented correctly

pierresouchay avatar May 31 '22 10:05 pierresouchay

The types are not present in 0.18. Try again with the development branch. It should work there. 0.19 is being prepared for release and will have the typing information.

jorwoods avatar Jun 06 '22 11:06 jorwoods

Thanks jorwoods - @pierresouchay this release is now available and hopefully solves your issue!

jacalata avatar Jun 07 '22 18:06 jacalata

@jorwoods @jacalata Does not seem to work...

With the example provided above:

mypy test_script.py --ignore-missing-imports --strict
test_script.py:8: error: Module has no attribute "TableauAuth"
test_script.py:9: error: Module has no attribute "Server"
test_script.py:10: error: Module has no attribute "GroupItem"
Found 3 errors in 1 file (checked 1 source file)
(venv) % python
Python 3.9.2 (v3.9.2:1a79785e3e, Feb 19 2021, 09:06:10)
[Clang 6.0 (clang-600.0.57)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import tableauserverclient as TSC
>>> TSC.__version__
'0.19.0'
>>> exit()

pierresouchay avatar Jun 07 '22 20:06 pierresouchay

Huh - I can definitely repro this. I'll take a look, thanks very much for following up!

jacalata avatar Jun 07 '22 20:06 jacalata

I believe the problem is because if you are in the TYPE_CHECKING mode, there are circular references, which break when trying to inspect from the top level. These things still work during run time because they are behind the TYPE_CHECKING flag.

jorwoods avatar Jun 08 '22 20:06 jorwoods

Tested and confirmed this is resolved by #1394

jorwoods avatar Jun 20 '24 11:06 jorwoods