8000 condition coverage and simplify 'get_spec' method of chameleonlookup · alex-python/pyramid@d99dc7d · GitHub
[go: up one dir, main page]

Skip to content

Commit d99dc7d

Browse files
committed
condition coverage and simplify 'get_spec' method of chameleonlookup
1 parent cdc866b commit d99dc7d

File tree

2 files changed

+263
-53
lines changed

2 files changed

+263
-53
lines changed

pyramid/renderers.py

Lines changed: 31 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -160,15 +160,30 @@ def __init__(self, impl, registry):
160160
self.lock = threading.Lock()
161161

162162
def get_spec(self, name, package):
163+
if not package:
164+
# if there's no package, we can't do any conversion
165+
return name
166+
163167
spec = name
164-
isabs = os.path.isabs(name)
168+
isabspath = os.path.isabs(name)
169+
colon_in_name = ':' in name
170+
isabsspec = colon_in_name and (not isabspath)
171+
isrelspec = (not isabsspec) and (not isabspath)
172+
173+
# if it's already an absolute spec, we don't need to do anything,
174+
# but if it's a relative spec or an absolute path, we need to try
175+
# to convert it to an absolute spec
176+
177+
if isrelspec:
178+
# convert relative asset spec to absolute asset spec
179+
pp = package_path(package)
180+
spec = os.path.join(pp, spec)
181+
spec = asset_spec_from_abspath(spec, package)
165182

166-
if (not isabs) and (not ':' in name) and package:
167-
# relative asset spec
168-
if not isabs:
169-
pp = package_path(package)
170-
spec = os.path.join(pp, spec)
183+
elif isabspath:
184+
# convert absolute path to absolute asset spec
171185
spec = asset_spec_from_abspath(spec, package)
186+
172187
return spec
173188

174189
@property # wait until completely necessary to look up translator
@@ -177,12 +192,16 @@ def translate(self):
177192

178193
@property # wait until completely necessary to look up debug_templates
179194
def debug(self):
180-
settings = self.registry.settings or {}
195+
settings = self.registry.settings
196+
if settings is None:
197+
return False
181198
return settings.get('debug_templates', False)
182199

183200
@property # wait until completely necessary to look up reload_templates
184201
def auto_reload(self):
185-
settings = self.registry.settings or {}
202+
settings = self.registry.settings
203+
if settings is None:
204+
return False
186205
return settings.get('reload_templates', False)
187206

188207
def __call__(self, info):
@@ -220,7 +239,7 @@ def __call__(self, info):
220239
raise ValueError(
221240
'Missing template asset: %s (%s)' % (spec, abspath))
222241
renderer = self.impl(abspath, self)
223-
settings = info.settings or {}
242+
settings = info.settings
224243
if not settings.get('reload_assets'):
225244
# cache the template
226245
self.lock.acquire()
@@ -268,7 +287,9 @@ def __init__(self, name=None, package=None, registry=None):
268287

269288
@reify
270289
def settings(self):
271-
settings = self.registry.settings or {}
290+
settings = self.registry.settings
291+
if settings is None:
292+
settings = {}
272293
return settings
273294

274295
@reify

0 commit comments

Comments
 (0)
0