Fix docstring style

This commit is contained in:
JustAnotherArchivist
2021-12-14 20:05:51 +00:00
parent 7fdc8bcb53
commit 1f1c1bd8af

View File

@@ -28,6 +28,7 @@ class _DeprecatedProperty:
def _json_serialise_datetime(obj): def _json_serialise_datetime(obj):
'''A JSON serialiser that converts datetime.datetime and datetime.date objects to ISO-8601 strings.''' '''A JSON serialiser that converts datetime.datetime and datetime.date objects to ISO-8601 strings.'''
if isinstance(obj, (datetime.datetime, datetime.date)): if isinstance(obj, (datetime.datetime, datetime.date)):
return obj.isoformat() return obj.isoformat()
raise TypeError(f'Object of type {type(obj)} is not JSON serializable') raise TypeError(f'Object of type {type(obj)} is not JSON serializable')
@@ -62,6 +63,7 @@ class _JSONDataclass:
def json(self): def json(self):
'''Convert the object to a JSON string''' '''Convert the object to a JSON string'''
out = _json_dataclass_to_dict(self) out = _json_dataclass_to_dict(self)
for key, value in list(out.items()): # Modifying the dict below, so make a copy first for key, value in list(out.items()): # Modifying the dict below, so make a copy first
if isinstance(value, IntWithGranularity): if isinstance(value, IntWithGranularity):
@@ -75,7 +77,8 @@ class _JSONDataclass:
class Item(_JSONDataclass): class Item(_JSONDataclass):
'''An abstract base class for an item returned by the scraper's get_items generator. '''An abstract base class for an item returned by the scraper's get_items generator.
An item can really be anything. The string representation should be useful for the CLI output (e.g. a direct URL for the item).''' An item can really be anything. The string representation should be useful for the CLI output (e.g. a direct URL for the item).
'''
@abc.abstractmethod @abc.abstractmethod
def __str__(self): def __str__(self):
@@ -86,7 +89,8 @@ class Item(_JSONDataclass):
class Entity(_JSONDataclass): class Entity(_JSONDataclass):
'''An abstract base class for an entity returned by the scraper's entity property. '''An abstract base class for an entity returned by the scraper's entity property.
An entity is typically the account of a person or organisation. The string representation should be the preferred direct URL to the entity's page on the network.''' An entity is typically the account of a person or organisation. The string representation should be the preferred direct URL to the entity's page on the network.
'''
@abc.abstractmethod @abc.abstractmethod
def __str__(self): def __str__(self):
@@ -96,7 +100,8 @@ class Entity(_JSONDataclass):
class IntWithGranularity(int): class IntWithGranularity(int):
'''A number with an associated granularity '''A number with an associated granularity
For example, an IntWithGranularity(42000, 1000) represents a number on the order of 42000 with two significant digits, i.e. something counted with a granularity of 1000.''' For example, an IntWithGranularity(42000, 1000) represents a number on the order of 42000 with two significant digits, i.e. something counted with a granularity of 1000.
'''
def __new__(cls, value, granularity, *args, **kwargs): def __new__(cls, value, granularity, *args, **kwargs):
obj = super().__new__(cls, value, *args, **kwargs) obj = super().__new__(cls, value, *args, **kwargs)
@@ -137,12 +142,15 @@ class Scraper:
@abc.abstractmethod @abc.abstractmethod
def get_items(self): def get_items(self):
'''Iterator yielding Items.''' '''Iterator yielding Items.'''
pass pass
def _get_entity(self): def _get_entity(self):
'''Get the entity behind the scraper, if any. '''Get the entity behind the scraper, if any.
This is the method implemented by subclasses for doing the actual retrieval/entity object creation. For accessing the scraper's entity, use the entity property.''' This is the method implemented by subclasses for doing the actual retrieval/entity object creation. For accessing the scraper's entity, use the entity property.
'''
return None return None
@functools.cached_property @functools.cached_property