Skip to content

Commit

Permalink
Mark unmodified after load
Browse files Browse the repository at this point in the history
  • Loading branch information
jacebrowning committed Dec 22, 2018
1 parent 6b9ae0e commit 6de760a
Show file tree
Hide file tree
Showing 7 changed files with 35 additions and 35 deletions.
4 changes: 2 additions & 2 deletions datafiles/hooks.py
Original file line number Diff line number Diff line change
Expand Up @@ -49,11 +49,11 @@ def apply(instance, datafile, get_datafile):
attr.datafile = get_datafile(attr)
apply(attr, datafile, get_datafile)
elif type(attr) == list: # pylint: disable=unidiomatic-typecheck
attr = new_class('List', (list,))(attr)
attr = new_class(f'list-{name}', (list,))(attr)
setattr(instance, name, attr)
apply(attr, datafile, get_datafile)
elif type(attr) == dict: # pylint: disable=unidiomatic-typecheck
attr = new_class('Dict', (dict,))(attr)
attr = new_class(f'dict-{name}', (dict,))(attr)
setattr(instance, name, attr)
apply(attr, datafile, get_datafile)

Expand Down
6 changes: 4 additions & 2 deletions datafiles/managers.py
Original file line number Diff line number Diff line change
Expand Up @@ -167,7 +167,9 @@ def load(self, *, first_load=False) -> None:
else:
self._set_attribute_value(data, name, converter, first_load)

log.info(f'Loaded object: {self._instance}')
log.info(f'Loaded instance: {self._instance.__class__.__name__}')

self.modified = False

def _set_dataclass_value(self, data, name, converter, first_load):
# TODO: Support nesting unlimited levels
Expand Down Expand Up @@ -251,7 +253,7 @@ def _get_default_field_value(self, name):

@prevent_recursion
def save(self, include_default_values: Trilean = None) -> None:
log.info(f'Saving object: {self._instance}')
log.info(f'Saving instance: {self._instance.__class__.__name__}')

if not self.path:
raise RuntimeError(f"'pattern' must be set to save the model")
Expand Down
24 changes: 12 additions & 12 deletions notebooks/format_options.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@
"name": "stderr",
"output_type": "stream",
"text": [
"INFO: datafiles.managers: Saving object: Sample(my_dict=Nested(value=0), my_list=[Nested(value=1), Nested(value=2)], my_bool=True, my_float=1.23, my_int=42, my_str='Hello, world!')\n",
"INFO: datafiles.managers: Saving instance: Sample\n",
"INFO: datafiles.managers: Writing file: files/format_options.json\n"
]
}
Expand Down Expand Up @@ -116,13 +116,13 @@
"name": "stderr",
"output_type": "stream",
"text": [
"INFO: datafiles.managers: Saving object: Sample(my_dict=Nested(value=0), my_list=[Nested(value=1), Nested(value=2)], my_bool=True, my_float=1.23, my_int=42, my_str='Hello, world!')\n",
"INFO: datafiles.managers: Saving instance: Sample\n",
"INFO: datafiles.managers: Writing file: files/format_options.json\n",
"INFO: datafiles.managers: Saving object: Sample(my_dict=Nested(value=0), my_list=[Nested(value=1), Nested(value=2)], my_bool=True, my_float=1.23, my_int=42, my_str='Hello, world!')\n",
"INFO: datafiles.managers: Saving instance: Sample\n",
"INFO: datafiles.managers: Writing file: files/format_options.json\n",
"INFO: datafiles.managers: Saving object: Sample(my_dict=Nested(value=0), my_list=[Nested(value=1), Nested(value=2)], my_bool=True, my_float=1.23, my_int=42, my_str='Hello, world!')\n",
"INFO: datafiles.managers: Saving instance: Sample\n",
"INFO: datafiles.managers: Writing file: files/format_options.json\n",
"INFO: datafiles.managers: Saving object: Sample(my_dict=Nested(value=0), my_list=[Nested(value=1), Nested(value=2)], my_bool=True, my_float=1.23, my_int=42, my_str='Hello, world!')\n",
"INFO: datafiles.managers: Saving instance: Sample\n",
"INFO: datafiles.managers: Writing file: files/format_options.toml\n"
]
}
Expand Down Expand Up @@ -184,19 +184,19 @@
"name": "stderr",
"output_type": "stream",
"text": [
"INFO: datafiles.managers: Saving object: Sample(my_dict=Nested(value=0), my_list=[Nested(value=1), Nested(value=2)], my_bool=True, my_float=1.23, my_int=42, my_str='Hello, world!')\n",
"INFO: datafiles.managers: Saving instance: Sample\n",
"INFO: datafiles.managers: Writing file: files/format_options.json\n",
"INFO: datafiles.managers: Saving object: Sample(my_dict=Nested(value=0), my_list=[Nested(value=1), Nested(value=2)], my_bool=True, my_float=1.23, my_int=42, my_str='Hello, world!')\n",
"INFO: datafiles.managers: Saving instance: Sample\n",
"INFO: datafiles.managers: Writing file: files/format_options.toml\n",
"INFO: datafiles.managers: Saving object: Sample(my_dict=Nested(value=0), my_list=[Nested(value=1), Nested(value=2)], my_bool=True, my_float=1.23, my_int=42, my_str='Hello, world!')\n",
"INFO: datafiles.managers: Saving instance: Sample\n",
"INFO: datafiles.managers: Writing file: files/format_options.json\n",
"INFO: datafiles.managers: Saving object: Sample(my_dict=Nested(value=0), my_list=[Nested(value=1), Nested(value=2)], my_bool=True, my_float=1.23, my_int=42, my_str='Hello, world!')\n",
"INFO: datafiles.managers: Saving instance: Sample\n",
"INFO: datafiles.managers: Writing file: files/format_options.toml\n",
"INFO: datafiles.managers: Saving object: Sample(my_dict=Nested(value=0), my_list=[Nested(value=1), Nested(value=2)], my_bool=True, my_float=1.23, my_int=42, my_str='Hello, world!')\n",
"INFO: datafiles.managers: Saving instance: Sample\n",
"INFO: datafiles.managers: Writing file: files/format_options.json\n",
"INFO: datafiles.managers: Saving object: Sample(my_dict=Nested(value=0), my_list=[Nested(value=1), Nested(value=2)], my_bool=True, my_float=1.23, my_int=42, my_str='Hello, world!')\n",
"INFO: datafiles.managers: Saving instance: Sample\n",
"INFO: datafiles.managers: Writing file: files/format_options.toml\n",
"INFO: datafiles.managers: Saving object: Sample(my_dict=Nested(value=0), my_list=[Nested(value=1), Nested(value=2)], my_bool=True, my_float=1.23, my_int=42, my_str='Hello, world!')\n",
"INFO: datafiles.managers: Saving instance: Sample\n",
"INFO: datafiles.managers: Writing file: files/format_options.yml\n"
]
}
Expand Down
6 changes: 2 additions & 4 deletions notebooks/nested_dataclass.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@
"output_type": "stream",
"text": [
"INFO: datafiles.managers: Reading file: files/nested_dataclass.yml\n",
"INFO: datafiles.managers: Loaded object: Sample(foo=42, bar=Nested(alpha=1, beta=0))\n"
"INFO: datafiles.managers: Loaded instance: Sample\n"
]
}
],
Expand Down Expand Up @@ -102,9 +102,7 @@
"name": "stderr",
"output_type": "stream",
"text": [
"INFO: datafiles.managers: Reading file: files/nested_dataclass.yml\n",
"INFO: datafiles.managers: Loaded object: Sample(foo=42, bar=Nested(alpha=True, beta=True))\n",
"INFO: datafiles.managers: Saving object: Sample(foo=42, bar=Nested(alpha=True, beta=1))\n",
"INFO: datafiles.managers: Saving instance: Sample\n",
"INFO: datafiles.managers: Writing file: files/nested_dataclass.yml\n"
]
}
Expand Down
16 changes: 8 additions & 8 deletions notebooks/patched_containers.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
"output_type": "stream",
"text": [
"WARNING: datafiles.converters: Schema enforcement not possible with 'Dict' annotation\n",
"INFO: datafiles.managers: Saving object: Sample(items=[], data={})\n",
"INFO: datafiles.managers: Saving instance: Sample\n",
"INFO: datafiles.managers: Writing file: files/patched_containers.yml\n"
]
}
Expand Down Expand Up @@ -55,9 +55,9 @@
"name": "stderr",
"output_type": "stream",
"text": [
"INFO: datafiles.managers: Saving object: Sample(items=[1], data={})\n",
"INFO: datafiles.managers: Saving instance: Sample\n",
"INFO: datafiles.managers: Writing file: files/patched_containers.yml\n",
"INFO: datafiles.managers: Saving object: Sample(items=[1, 2.3], data={})\n",
"INFO: datafiles.managers: Saving instance: Sample\n",
"INFO: datafiles.managers: Writing file: files/patched_containers.yml\n"
]
}
Expand Down Expand Up @@ -97,7 +97,7 @@
"name": "stderr",
"output_type": "stream",
"text": [
"INFO: datafiles.managers: Saving object: Sample(items=[4, 1, 2.3], data={})\n",
"INFO: datafiles.managers: Saving instance: Sample\n",
"INFO: datafiles.managers: Writing file: files/patched_containers.yml\n"
]
}
Expand Down Expand Up @@ -137,7 +137,7 @@
"name": "stderr",
"output_type": "stream",
"text": [
"INFO: datafiles.managers: Saving object: Sample(items=[4, 2.3], data={})\n",
"INFO: datafiles.managers: Saving instance: Sample\n",
"INFO: datafiles.managers: Writing file: files/patched_containers.yml\n"
]
}
Expand Down Expand Up @@ -183,7 +183,7 @@
"name": "stderr",
"output_type": "stream",
"text": [
"INFO: datafiles.managers: Saving object: Sample(items=[4, 2.3], data={'a': 1, 'b': 2})\n",
"INFO: datafiles.managers: Saving instance: Sample\n",
"INFO: datafiles.managers: Writing file: files/patched_containers.yml\n"
]
}
Expand Down Expand Up @@ -225,7 +225,7 @@
"name": "stderr",
"output_type": "stream",
"text": [
"INFO: datafiles.managers: Saving object: Sample(items=[4, 2.3], data={'a': 1, 'b': 2, 'c': 3})\n",
"INFO: datafiles.managers: Saving instance: Sample\n",
"INFO: datafiles.managers: Writing file: files/patched_containers.yml\n"
]
}
Expand Down Expand Up @@ -268,7 +268,7 @@
"name": "stderr",
"output_type": "stream",
"text": [
"INFO: datafiles.managers: Saving object: Sample(items=[4, 2.3], data={'a': 1, 'c': 3})\n",
"INFO: datafiles.managers: Saving instance: Sample\n",
"INFO: datafiles.managers: Writing file: files/patched_containers.yml\n"
]
},
Expand Down
6 changes: 3 additions & 3 deletions notebooks/readme.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@
"name": "stderr",
"output_type": "stream",
"text": [
"INFO: datafiles.managers: Saving object: InventoryItem(name='widget', unit_price=3, quantity_on_hand=0)\n",
"INFO: datafiles.managers: Saving instance: InventoryItem\n",
"INFO: datafiles.managers: Writing file: inventory/items/widget.yml\n"
]
}
Expand Down Expand Up @@ -77,7 +77,7 @@
"name": "stderr",
"output_type": "stream",
"text": [
"INFO: datafiles.managers: Saving object: InventoryItem(name='widget', unit_price=3, quantity_on_hand=100)\n",
"INFO: datafiles.managers: Saving instance: InventoryItem\n",
"INFO: datafiles.managers: Writing file: inventory/items/widget.yml\n"
]
}
Expand Down Expand Up @@ -136,7 +136,7 @@
"output_type": "stream",
"text": [
"INFO: datafiles.managers: Reading file: inventory/items/widget.yml\n",
"INFO: datafiles.managers: Loaded object: InventoryItem(name='widget', unit_price=2.5, quantity_on_hand=100)\n"
"INFO: datafiles.managers: Loaded instance: InventoryItem\n"
]
},
{
Expand Down
8 changes: 4 additions & 4 deletions notebooks/roundtrip_comments.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@
"name": "stderr",
"output_type": "stream",
"text": [
"INFO: datafiles.managers: Saving object: Sample(foo=42, bar='Hello, world')\n",
"INFO: datafiles.managers: Saving instance: Sample\n",
"INFO: datafiles.managers: Writing file: files/roundtrip_comments.yml\n"
]
}
Expand Down Expand Up @@ -146,10 +146,10 @@
"output_type": "stream",
"text": [
"INFO: datafiles.managers: Reading file: files/roundtrip_comments.yml\n",
"INFO: datafiles.managers: Loaded object: Sample(foo=42, bar='Hello, world!')\n",
"INFO: datafiles.managers: Saving object: Sample(foo=2018, bar='Hello, world!')\n",
"INFO: datafiles.managers: Loaded instance: Sample\n",
"INFO: datafiles.managers: Saving instance: Sample\n",
"INFO: datafiles.managers: Writing file: files/roundtrip_comments.yml\n",
"INFO: datafiles.managers: Saving object: Sample(foo=2018, bar='Hello, notebook')\n",
"INFO: datafiles.managers: Saving instance: Sample\n",
"INFO: datafiles.managers: Writing file: files/roundtrip_comments.yml\n"
]
}
Expand Down

0 comments on commit 6de760a

Please sign in to comment.