2e reviewed manuscript

This commit is contained in:
Luciano Ramalho
2021-11-12 11:33:12 -03:00
parent f5e3cb8ad3
commit 80f7f84274
32 changed files with 323 additions and 156 deletions

View File

@@ -30,8 +30,8 @@ instance attributes, created in each ``LineItem`` instance::
>>> nutmeg = LineItem('Moluccan nutmeg', 8, 13.95)
>>> nutmeg.weight, nutmeg.price # <1>
(8, 13.95)
>>> sorted(vars(nutmeg).items()) # <2>
[('description', 'Moluccan nutmeg'), ('price', 13.95), ('weight', 8)]
>>> nutmeg.__dict__ # <2>
{'description': 'Moluccan nutmeg', 'weight': 8, 'price': 13.95}
# end::LINEITEM_V2_PROP_DEMO[]

View File

@@ -54,12 +54,15 @@ class FrozenJSON:
except AttributeError:
return FrozenJSON.build(self.__data[name]) # <4>
def __dir__(self): # <5>
return self.__data.keys()
@classmethod
def build(cls, obj): # <5>
if isinstance(obj, abc.Mapping): # <6>
def build(cls, obj): # <6>
if isinstance(obj, abc.Mapping): # <7>
return cls(obj)
elif isinstance(obj, abc.MutableSequence): # <7>
elif isinstance(obj, abc.MutableSequence): # <8>
return [cls.build(item) for item in obj]
else: # <8>
else: # <9>
return obj
# end::EXPLORE0[]

View File

@@ -62,11 +62,14 @@ class FrozenJSON:
# end::EXPLORE1[]
def __getattr__(self, name):
if hasattr(self.__data, name):
try:
return getattr(self.__data, name)
else:
except AttributeError:
return FrozenJSON.build(self.__data[name])
def __dir__(self): # <5>
return self.__data.keys()
@classmethod
def build(cls, obj):
if isinstance(obj, abc.Mapping):

View File

@@ -47,8 +47,11 @@ class FrozenJSON:
self.__data[key] = value
def __getattr__(self, name):
if hasattr(self.__data, name):
try:
return getattr(self.__data, name)
else:
except AttributeError:
return FrozenJSON(self.__data[name]) # <4>
def __dir__(self):
return self.__data.keys()
# end::EXPLORE2[]

View File

@@ -23,8 +23,7 @@ class Record:
self.__dict__.update(kwargs) # <1>
def __repr__(self):
cls_name = self.__class__.__name__
return f'<{cls_name} serial={self.serial!r}>' # <2>
return f'<{self.__class__.__name__} serial={self.serial!r}>' # <2>
def load(path=JSON_PATH):
records = {} # <3>

View File

@@ -29,8 +29,7 @@ class Record:
self.__dict__.update(kwargs)
def __repr__(self):
cls_name = self.__class__.__name__
return f'<{cls_name} serial={self.serial!r}>'
return f'<{self.__class__.__name__} serial={self.serial!r}>'
@staticmethod # <3>
def fetch(key):
@@ -44,10 +43,9 @@ class Record:
class Event(Record): # <1>
def __repr__(self):
if hasattr(self, 'name'): # <2>
cls_name = self.__class__.__name__
return f'<{cls_name} {self.name!r}>'
else:
try:
return f'<{self.__class__.__name__} {self.name!r}>' # <2>
except AttributeError:
return super().__repr__()
@property

View File

@@ -33,8 +33,7 @@ class Record:
self.__dict__.update(kwargs)
def __repr__(self):
cls_name = self.__class__.__name__
return f'<{cls_name} serial={self.serial!r}>'
return f'<{self.__class__.__name__} serial={self.serial!r}>'
@staticmethod
def fetch(key):
@@ -46,11 +45,10 @@ class Record:
class Event(Record):
def __repr__(self):
if hasattr(self, 'name'): # <3>
cls_name = self.__class__.__name__
return f'<{cls_name} {self.name!r}>'
else:
return super().__repr__() # <4>
try:
return f'<{self.__class__.__name__} {self.name!r}>'
except AttributeError:
return super().__repr__()
@property
def venue(self):

View File

@@ -32,8 +32,7 @@ class Record:
self.__dict__.update(kwargs)
def __repr__(self):
cls_name = self.__class__.__name__
return f'<{cls_name} serial={self.serial!r}>'
return f'<{self.__class__.__name__} serial={self.serial!r}>'
@staticmethod
def fetch(key):
@@ -52,11 +51,10 @@ class Event(Record):
# end::SCHEDULE4_INIT[]
def __repr__(self):
if hasattr(self, 'name'):
cls_name = self.__class__.__name__
return f'<{cls_name} {self.name!r}>'
else:
return super().__repr__() # <4>
try:
return f'<{self.__class__.__name__} {self.name!r}>'
except AttributeError:
return super().__repr__()
@property
def venue(self):

View File

@@ -31,8 +31,7 @@ class Record:
self.__dict__.update(kwargs)
def __repr__(self):
cls_name = self.__class__.__name__
return f'<{cls_name} serial={self.serial!r}>'
return f'<{self.__class__.__name__} serial={self.serial!r}>'
@staticmethod
def fetch(key):
@@ -44,11 +43,10 @@ class Record:
class Event(Record):
def __repr__(self):
if hasattr(self, 'name'):
cls_name = self.__class__.__name__
return f'<{cls_name} {self.name!r}>'
else:
return super().__repr__() # <4>
try:
return f'<{self.__class__.__name__} {self.name!r}>'
except AttributeError:
return super().__repr__()
@property
def venue(self):

View File

@@ -36,8 +36,7 @@ class Record:
self.__dict__.update(kwargs)
def __repr__(self):
cls_name = self.__class__.__name__
return f'<{cls_name} serial={self.serial!r}>'
return f'<{self.__class__.__name__} serial={self.serial!r}>'
@staticmethod
def fetch(key):
@@ -49,10 +48,9 @@ class Record:
class Event(Record):
def __repr__(self):
if hasattr(self, 'name'):
cls_name = self.__class__.__name__
return f'<{cls_name} {self.name!r}>'
else:
try:
return f'<{self.__class__.__name__} {self.name!r}>'
except AttributeError:
return super().__repr__()
# tag::SCHEDULE5_CACHED_PROPERTY[]