forked from platypush/platypush
Entity.columns
class property replaced by Entity.get_columns
method.
Again, Python < 3.9 doesn't like the combination of `@property` + `@classmethod`.
This commit is contained in:
parent
a9cdff900e
commit
2cab836bdf
3 changed files with 16 additions and 10 deletions
|
@ -117,9 +117,8 @@ if 'entity' not in Base.metadata:
|
|||
'polymorphic_on': type,
|
||||
}
|
||||
|
||||
@classmethod # type: ignore
|
||||
@property
|
||||
def columns(cls) -> Tuple[ColumnProperty, ...]:
|
||||
@classmethod
|
||||
def get_columns(cls) -> Tuple[ColumnProperty, ...]:
|
||||
inspector = schema_inspect(cls)
|
||||
return tuple(inspector.mapper.column_attrs)
|
||||
|
||||
|
@ -146,7 +145,7 @@ if 'entity' not in Base.metadata:
|
|||
return self.__class__(
|
||||
**dict(
|
||||
key_value_pair(col) # type: ignore
|
||||
for col in self.columns
|
||||
for col in self.get_columns()
|
||||
if key_value_pair(col) is not None
|
||||
),
|
||||
children=[child.copy() for child in self.children],
|
||||
|
@ -213,7 +212,7 @@ if 'entity' not in Base.metadata:
|
|||
return {
|
||||
**dict(
|
||||
self._column_to_pair(col)
|
||||
for col in self.columns
|
||||
for col in self.get_columns()
|
||||
if self._column_to_pair(col)
|
||||
),
|
||||
'children_ids': self.children_ids,
|
||||
|
@ -241,7 +240,7 @@ if 'entity' not in Base.metadata:
|
|||
"""
|
||||
Serializes the new value before assigning it to an attribute.
|
||||
"""
|
||||
matching_columns = [c for c in self.columns if c.expression.name == key] # type: ignore
|
||||
matching_columns = [c for c in self.get_columns() if c.expression.name == key] # type: ignore
|
||||
|
||||
if (
|
||||
matching_columns
|
||||
|
|
|
@ -176,7 +176,7 @@ class EntitiesMerger:
|
|||
"""
|
||||
Merge two versions of an entity column by column.
|
||||
"""
|
||||
columns = [col.key for col in entity.columns]
|
||||
columns = [col.key for col in entity.get_columns()]
|
||||
for col in columns:
|
||||
if col == 'meta':
|
||||
existing_entity.meta = { # type: ignore
|
||||
|
@ -189,7 +189,9 @@ class EntitiesMerger:
|
|||
except ObjectDeletedError as e:
|
||||
logger.warning(
|
||||
'Could not set %s on entity <%s>: %s',
|
||||
col, existing_entity.entity_key, e
|
||||
col,
|
||||
existing_entity.entity_key,
|
||||
e,
|
||||
)
|
||||
|
||||
# Recursive call to merge the columns of the children too
|
||||
|
|
|
@ -44,6 +44,8 @@ class RssPlugin(RunnablePlugin):
|
|||
+ 'Chrome/62.0.3202.94 Safari/537.36'
|
||||
)
|
||||
|
||||
timeout = 20
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
subscriptions: Optional[Collection[str]] = None,
|
||||
|
@ -117,7 +119,9 @@ class RssPlugin(RunnablePlugin):
|
|||
import feedparser
|
||||
|
||||
feed = feedparser.parse(
|
||||
requests.get(url, headers={'User-Agent': self.user_agent}, timeout=20).text,
|
||||
requests.get(
|
||||
url, headers={'User-Agent': self.user_agent}, timeout=self.timeout
|
||||
).text,
|
||||
)
|
||||
return RssFeedEntrySchema().dump(
|
||||
sorted(
|
||||
|
@ -200,6 +204,7 @@ class RssPlugin(RunnablePlugin):
|
|||
headers={
|
||||
'User-Agent': self.user_agent,
|
||||
},
|
||||
timeout=self.timeout,
|
||||
).text
|
||||
except Exception as e:
|
||||
self.logger.warning('Could not retrieve subscription %s: %s', url, e)
|
||||
|
@ -365,7 +370,7 @@ class RssPlugin(RunnablePlugin):
|
|||
url = response['url']
|
||||
error = response.get('error')
|
||||
if error:
|
||||
self.logger.error(f'Could not parse feed {url}: {error}')
|
||||
self.logger.error('Could not parse feed %s: %s', url, error)
|
||||
responses[url] = error
|
||||
else:
|
||||
responses[url] = response['content']
|
||||
|
|
Loading…
Reference in a new issue