spock icon indicating copy to clipboard operation
spock copied to clipboard

Unable to use newer syntax of typing

Open fer-git opened this issue 1 year ago • 1 comments

Describe the bug I would like to use generic types such as list[int] instead of from typing import List; List[int].

I do know that the example in the documentation explicitly show that I need to import List from typing, but ever since python 3.9, it is preferred to directly use list as type annotation.

To Reproduce Create file simple.py

from spock import SpockBuilder, spock

@spock
class BasicConfig:
    most_fancy_parameter: list[int]

def main():
    config = SpockBuilder(BasicConfig, desc="Quick start example").generate()
    print(config)

if __name__ == "__main__":
    main()

Run the script,

python simple.py --BasicConfig.most_fancy_parameter "[128, 128]"    

I got:

spock.exceptions._SpockInstantiationError: Spock class `BasicConfig` could not be instantiated -- attrs message: isinstance() argument 2 cannot be a parameterized generic

Environment (please complete the following information):

  • OS: Mac 10.13
  • Python version: 3.10
  • Spock version: 3.0.2

fer-git avatar Mar 30 '23 14:03 fer-git

Noted. Will see what it takes to support the basic non typing lib types.

I'm assuming the following basic types:

  • int
  • float
  • str
  • list
  • tuple
  • dict

ncilfone avatar Mar 31 '23 13:03 ncilfone