Cannot import certain testinfra classes for Type Annotations
I would like to be able to use testinfra classes (Specifically Package and CommandResults) in type annotations.
def my_function(pkg_names: List[str]) -> List[testinfra.modules.base.Package]:
# function code that returns a list containing of Package instance objects:
However I always get an error AttributeError: module 'testinfra.modules' has no attribute 'base'.
I'm able to import and use Hosts without issue.
Hi, did you tried List[testinfra.modules.package.Package] ?
Python 3.6.6 (default, Sep 12 2018, 18:26:19)
[GCC 8.0.1 20180414 (experimental) [trunk revision 259383]] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import testinfra
>>> testinfra.modules.package.Package
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: module 'testinfra.modules' has no attribute 'package'
I altered my code so in my specific case I no longer need use Package in the return type annotation.
I would still really like to be able to import the CommandResult type so I can use it for Type checking and hinting.
For CommandResult I tried testinfra.backend.base.CommandResult but I get a no 'base' attribute error.
If I do a dir() on testinfra.backend I see things like... 'BACKENDS', 'get_backend', 'get_backend_class', 'get_backends'. I assumed I could use one of those to access the CommandResult class.
This is what I got when I tried to use get_backend_class().
>>> testinfra.backend.get_backend_class("CommandResults")
Traceback (most recent call last):
File "/path_to_my_project-P6MEBeTa/lib/python3.6/site-packages/testinfra/backend/__init__.py", line 37, in get_backend_class
classpath = BACKENDS[connection]
KeyError: 'CommandResults'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "path_to_my_project-P6MEBeTa/lib/python3.6/site-packages/testinfra/backend/__init__.py", line 39, in get_backend_class
raise RuntimeError("Unknown connection type '%s'" % (connection,))
RuntimeError: Unknown connection type 'CommandResults'