1
0
Fork 0
forked from github/pelican

fix testing failures

when settings could be pathlib.Path
This commit is contained in:
MinchinWeb 2020-04-23 13:47:10 -06:00
commit cfba3d72be
6 changed files with 58 additions and 39 deletions

View file

@ -215,7 +215,7 @@ class Content:
if not klass:
klass = self.__class__.__name__
fq_key = ('{}_{}'.format(klass, key)).upper()
return self.settings[fq_key].format(**self.url_format)
return str(self.settings[fq_key]).format(**self.url_format)
def get_url_setting(self, key):
if hasattr(self, 'override_' + key):

View file

@ -349,12 +349,12 @@ class ArticlesGenerator(CachingGenerator):
writer.write_feed(
arts,
self.context,
self.settings['CATEGORY_FEED_ATOM'].format(slug=cat.slug),
str(self.settings['CATEGORY_FEED_ATOM']).format(slug=cat.slug),
self.settings.get(
'CATEGORY_FEED_ATOM_URL',
str(self.settings['CATEGORY_FEED_ATOM'])).format(
str(self.settings['CATEGORY_FEED_ATOM']).format(
slug=cat.slug
),
)),
feed_title=cat.name
)
@ -362,12 +362,12 @@ class ArticlesGenerator(CachingGenerator):
writer.write_feed(
arts,
self.context,
self.settings['CATEGORY_FEED_RSS'].format(slug=cat.slug),
str(self.settings['CATEGORY_FEED_RSS']).format(slug=cat.slug),
self.settings.get(
'CATEGORY_FEED_RSS_URL',
str(self.settings['CATEGORY_FEED_RSS'])).format(
str(self.settings['CATEGORY_FEED_RSS']).format(
slug=cat.slug
),
)),
feed_title=cat.name,
feed_type='rss'
)
@ -377,12 +377,12 @@ class ArticlesGenerator(CachingGenerator):
writer.write_feed(
arts,
self.context,
self.settings['AUTHOR_FEED_ATOM'].format(slug=auth.slug),
str(self.settings['AUTHOR_FEED_ATOM']).format(slug=auth.slug),
self.settings.get(
'AUTHOR_FEED_ATOM_URL',
str(self.settings['AUTHOR_FEED_ATOM'])).format(
str(self.settings['AUTHOR_FEED_ATOM']).format(
slug=auth.slug
),
)),
feed_title=auth.name
)
@ -390,12 +390,12 @@ class ArticlesGenerator(CachingGenerator):
writer.write_feed(
arts,
self.context,
self.settings['AUTHOR_FEED_RSS'].format(slug=auth.slug),
str(self.settings['AUTHOR_FEED_RSS']).format(slug=auth.slug),
self.settings.get(
'AUTHOR_FEED_RSS_URL',
str(self.settings['AUTHOR_FEED_RSS'])).format(
str(self.settings['AUTHOR_FEED_RSS']).format(
slug=auth.slug
),
)),
feed_title=auth.name,
feed_type='rss'
)
@ -407,12 +407,12 @@ class ArticlesGenerator(CachingGenerator):
writer.write_feed(
arts,
self.context,
self.settings['TAG_FEED_ATOM'].format(slug=tag.slug),
str(self.settings['TAG_FEED_ATOM']).format(slug=tag.slug),
self.settings.get(
'TAG_FEED_ATOM_URL',
str(self.settings['TAG_FEED_ATOM'])).format(
str(self.settings['TAG_FEED_ATOM']).format(
slug=tag.slug
),
)),
feed_title=tag.name
)
@ -420,12 +420,12 @@ class ArticlesGenerator(CachingGenerator):
writer.write_feed(
arts,
self.context,
self.settings['TAG_FEED_RSS'].format(slug=tag.slug),
str(self.settings['TAG_FEED_RSS']).format(slug=tag.slug),
self.settings.get(
'TAG_FEED_RSS_URL',
str(self.settings['TAG_FEED_RSS'])).format(
str(self.settings['TAG_FEED_RSS']).format(
slug=tag.slug
),
)),
feed_title=tag.name,
feed_type='rss'
)
@ -443,27 +443,31 @@ class ArticlesGenerator(CachingGenerator):
writer.write_feed(
items,
self.context,
str(
self.settings['TRANSLATION_FEED_ATOM']
.format(lang=lang),
).format(lang=lang),
self.settings.get(
'TRANSLATION_FEED_ATOM_URL',
str(
self.settings['TRANSLATION_FEED_ATOM'])
self.settings['TRANSLATION_FEED_ATOM']
).format(lang=lang),
)
)
if self.settings.get('TRANSLATION_FEED_RSS'):
writer.write_feed(
items,
self.context,
str(
self.settings['TRANSLATION_FEED_RSS']
.format(lang=lang),
).format(lang=lang),
self.settings.get(
'TRANSLATION_FEED_RSS_URL',
str(self.settings['TRANSLATION_FEED_RSS'])).format(
str(self.settings['TRANSLATION_FEED_RSS']).format(
lang=lang
),
feed_type='rss'
)
)
def generate_articles(self, write):
"""Generate the articles."""

View file

@ -406,7 +406,7 @@ def handle_deprecated_settings(settings):
for key in ['TRANSLATION_FEED_ATOM',
'TRANSLATION_FEED_RSS'
]:
if settings.get(key) and '%s' in settings[key]:
if settings.get(key) and not isinstance(settings[key], Path) and '%s' in settings[key]:
logger.warning('%%s usage in %s is deprecated, use {lang} '
'instead.', key)
try:
@ -423,7 +423,7 @@ def handle_deprecated_settings(settings):
'TAG_FEED_ATOM',
'TAG_FEED_RSS',
]:
if settings.get(key) and '%s' in settings[key]:
if settings.get(key) and not isinstance(settings[key], Path) and '%s' in settings[key]:
logger.warning('%%s usage in %s is deprecated, use {slug} '
'instead.', key)
try:

View file

@ -1,6 +1,7 @@
import functools
import logging
import os
import pathlib
from pelican.utils import slugify
@ -110,6 +111,8 @@ class URLWrapper:
"""
setting = "{}_{}".format(self.__class__.__name__.upper(), key)
value = self.settings[setting]
if isinstance(value, pathlib.Path):
value = str(value)
if not isinstance(value, str):
logger.warning('%s is set to %s', setting, value)
return value

View file

@ -3,6 +3,7 @@ import fnmatch
import locale
import logging
import os
import pathlib
import re
import shutil
import sys
@ -921,6 +922,7 @@ def split_all(path):
>>> split_all(os.path.join('a', 'b', 'c'))
['a', 'b', 'c']
"""
if isinstance(path, str):
components = []
path = path.lstrip('/')
while path:
@ -932,6 +934,16 @@ def split_all(path):
break
path = head
return components
elif isinstance(path, pathlib.Path):
return path.parts
elif path is None:
return None
else:
raise TypeError(
'"path" was {}, must be string, None, or pathlib.Path'.format(
type(path)
)
)
def is_selected_for_writing(settings, path):

View file

@ -29,7 +29,7 @@ class Writer:
self.urljoiner = posix_join
else:
self.urljoiner = lambda base, url: urljoin(
base if base.endswith('/') else base + '/', url)
base if base.endswith('/') else base + '/', str(url))
def _create_new_feed(self, feed_type, feed_title, context):
feed_class = Rss201rev2Feed if feed_type == 'rss' else Atom1Feed