Hide keyboard shortcuts

Hot-keys on this page

r m x p   toggle line displays

j k   next/prev highlighted chunk

0   (zero) top of page

1   (one) first highlighted chunk

1import os 

2import pkg_resources 

3 

4from pyramid.compat import string_types 

5 

6from pyramid.path import package_path, package_name 

7 

8 

9def resolve_asset_spec(spec, pname='__main__'): 

10 if pname and not isinstance(pname, string_types): 

11 pname = pname.__name__ # as package 

12 if os.path.isabs(spec): 

13 return None, spec 

14 filename = spec 

15 if ':' in spec: 

16 pname, filename = spec.split(':', 1) 

17 elif pname is None: 

18 pname, filename = None, spec 

19 return pname, filename 

20 

21 

22def asset_spec_from_abspath(abspath, package): 

23 """ Try to convert an absolute path to a resource in a package to 

24 a resource specification if possible; otherwise return the 

25 absolute path. """ 

26 if getattr(package, '__name__', None) == '__main__': 

27 return abspath 

28 pp = package_path(package) + os.path.sep 

29 if abspath.startswith(pp): 

30 relpath = abspath[len(pp) :] 

31 return '%s:%s' % ( 

32 package_name(package), 

33 relpath.replace(os.path.sep, '/'), 

34 ) 

35 return abspath 

36 

37 

38# bw compat only; use pyramid.path.AssetResolver().resolve(spec).abspath() 

39def abspath_from_asset_spec(spec, pname='__main__'): 

40 if pname is None: 

41 return spec 

42 pname, filename = resolve_asset_spec(spec, pname) 

43 if pname is None: 

44 return filename 

45 return pkg_resources.resource_filename(pname, filename)