fidelity / spock

spock is a framework that helps manage complex parameter configurations during research and development of Python applications
https://fidelity.github.io/spock/
Apache License 2.0
121 stars 13 forks source link

Unable to use newer syntax of typing #280

Open fer-git opened 1 year ago

fer-git commented 1 year ago

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):

ncilfone commented 1 year ago

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

I'm assuming the following basic types: