Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 15 additions & 15 deletions fastcore/xtras.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,16 +5,16 @@
# AUTOGENERATED! DO NOT EDIT! File to edit: ../nbs/03_xtras.ipynb.

# %% auto #0
__all__ = ['spark_chars', 'UNSET', 'walk_join', 'walk', 'exttypes', 'globtastic', 'pglob', 'maybe_open', 'mkdir', 'image_size',
__all__ = ['UNSET', 'spark_chars', 'walk_join', 'walk', 'exttypes', 'globtastic', 'pglob', 'maybe_open', 'mkdir', 'image_size',
'img_bytes', 'detect_mime', 'bunzip', 'loads', 'loads_multi', 'dumps', 'untar_dir', 'repo_details', 'shell',
'ssh', 'rsync_multi', 'run', 'open_file', 'save_pickle', 'load_pickle', 'parse_env', 'expand_wildcards',
'atomic_save', 'load_mod', 'import_no_init', 'dict2obj', 'obj2dict', 'repr_dict', 'is_listy', 'mapped',
'IterLen', 'ReindexCollection', 'SaveReturn', 'trim_wraps', 'save_iter', 'asave_iter', 'frontmatter',
'clean_cli_output', 'unqid', 'rtoken_hex', 'friendly_name', 'n_friendly_names', 'exec_eval',
'atomic_save', 'load_mod', 'import_no_init', 'Unset', 'dict2obj', 'obj2dict', 'repr_dict', 'is_listy',
'mapped', 'IterLen', 'ReindexCollection', 'SaveReturn', 'trim_wraps', 'save_iter', 'asave_iter',
'frontmatter', 'clean_cli_output', 'unqid', 'rtoken_hex', 'friendly_name', 'n_friendly_names', 'exec_eval',
'get_source_link', 'sparkline', 'modify_exception', 'round_multiple', 'set_num_threads', 'join_path_file',
'autostart', 'EventTimer', 'stringfmt_names', 'PartialFormatter', 'partial_format', 'truncstr', 'utc2local',
'local2utc', 'trace', 'modified_env', 'ContextManagers', 'shufflish', 'console_help', 'hl_md', 'type2str',
'dataclass_src', 'Unset', 'nullable_dc', 'make_nullable', 'flexiclass', 'asdict', 'vars_pub', 'is_typeddict',
'dataclass_src', 'nullable_dc', 'make_nullable', 'flexiclass', 'asdict', 'vars_pub', 'is_typeddict',
'is_namedtuple', 'CachedIter', 'CachedAwaitable', 'reawaitable', 'is_async_callable', 'maybe_await',
'to_aiter', 'maybe_aiter', 'mapa', 'noopa', 'flexicache', 'time_policy', 'mtime_policy', 'timed_cache']

Expand Down Expand Up @@ -449,10 +449,18 @@ def import_no_init(name):
if len(parts)>1: path = path.parent.joinpath(*parts[1:]).with_suffix('.py')
return load_mod(name, path)

# %% ../nbs/03_xtras.ipynb #6368c600
class Unset(Enum):
_Unset=''
def __repr__(self): return 'UNSET'
def __str__ (self): return 'UNSET'
def __bool__(self): return False
UNSET = Unset._Unset

# %% ../nbs/03_xtras.ipynb #9579358d
def dict2obj(d=None, list_func=L, dict_func=AttrDict, **kwargs):
def dict2obj(d=UNSET, list_func=L, dict_func=AttrDict, **kwargs):
"Convert (possibly nested) dicts (or lists of dicts) to `AttrDict`"
if d is None: d={}
if d is UNSET: d={}
if isinstance(d, (L,list)): return list_func([dict2obj(v, list_func=list_func, dict_func=dict_func) for v in d])
if not isinstance(d, dict): return d
return dict_func(**{k:dict2obj(v, list_func=list_func, dict_func=dict_func) for k,v in (d|kwargs).items()})
Expand Down Expand Up @@ -946,14 +954,6 @@ def dataclass_src(cls):
src += f" {f.name}: {type2str(f.type)}{d}\n"
return src

# %% ../nbs/03_xtras.ipynb #ecd7f0a2
class Unset(Enum):
_Unset=''
def __repr__(self): return 'UNSET'
def __str__ (self): return 'UNSET'
def __bool__(self): return False
UNSET = Unset._Unset

# %% ../nbs/03_xtras.ipynb #1e9a46ab
def nullable_dc(cls):
"Like `dataclass`, but default of `UNSET` added to fields without defaults"
Expand Down
Loading
Loading