contains-io/typet

Ideas for built-in types.

dangle opened this issue · 3 comments

typet needs to supply a rich collection of types by default. This issue will track ideas for the initial types.

Create a SingletonObject by creating a private metaclass that inherits from Singleton and _ObjectMeta and a metaclass for a StrictSingletonObject that inherits from Singleton and _StrictObjectMeta.

The proposed use case would be a global settings object:

from typet import SingletonObject, File

class _Configuration(SingletonObject):
    config: File = '~/.my_config'

settings = _Configuration()
  • JsonFile
    ** Validates a file's existence and that it can be parsed as JSON.
    ** Instances are dicts.
    ** Sliceable to indicate the type of dict returned.
    ** JsonFile implies JsonFile[dict] by default.
    ** JsonFile[OrderedDict]
    • JsonFile[DefaultDict[Any, Any])
      ** If yaml is installed (optional in setup.py), parse YAML files?

"Registerable" metaclass that registers subclassess automatically.