##// END OF EJS Templates
Separate input and output group from null template...
Separate input and output group from null template This should make it easier to support input output cell styles

File last commit:

r10262:a5922fd3
r12657:412a614b
Show More
display.py
343 lines | 12.8 KiB | text/x-python | PythonLexer
Brian E. Granger
Added lib/display.py for extra display related things.
r4408 """Various display related classes.
Greg Caporaso
updating my code to incorporate upstream changes; resolved a merge conflict in IPython/lib/display.py
r8798 Authors : MinRK, gregcaporaso, dannystaple
Brian E. Granger
Added lib/display.py for extra display related things.
r4408 """
Greg Caporaso
updated to use os.walk instead of os.path.walk - os.path.walk is not supported in Python 3
r8800 from os.path import exists, isfile, splitext, abspath, join, isdir
Greg Caporaso
this should address the failure in #2732...
r9093 from os import walk, sep
Greg Caporaso
Working versions of formatters for files and directories that are generated within an IPython notebook session. This is useful for integrating tools like QIIME with the IPython notebook as it allows users to generate QIIME's HTML visualizations and open them in new pages in their the web browser.
r8272
Eugene Van den Bulke
IFrame + ScribdDocument
r10260 class IFrame(object):
Eugene Van den Bulke
VideoIframe from YouTubeVideo (simplified) + VimeoVideo
r10249 """
Eugene Van den Bulke
IFrame + ScribdDocument
r10260 Generic class to embed an iframe in an IPython notebook
Eugene Van den Bulke
VideoIframe from YouTubeVideo (simplified) + VimeoVideo
r10249 """
Eugene Van den Bulke
generic IFrame(src, with, height), refactored YouTubeVideo, VimeoVideo, ScribdDocument
r10262 iframe = """
<iframe
width="{width}"
height={height}"
src="{src}{params}"
frameborder="0"
allowfullscreen
></iframe>
"""
def __init__(self, src, width, height, **kwargs):
self.src = src
Eugene Van den Bulke
VideoIframe from YouTubeVideo (simplified) + VimeoVideo
r10249 self.width = width
self.height = height
self.params = kwargs
def _repr_html_(self):
Eugene Van den Bulke
generic IFrame(src, with, height), refactored YouTubeVideo, VimeoVideo, ScribdDocument
r10262 """return the embed iframe"""
Eugene Van den Bulke
VideoIframe from YouTubeVideo (simplified) + VimeoVideo
r10249 if self.params:
from urllib import urlencode
params = "?" + urlencode(self.params)
else:
params = ""
Eugene Van den Bulke
generic IFrame(src, with, height), refactored YouTubeVideo, VimeoVideo, ScribdDocument
r10262 return self.iframe.format(src=self.src,
width=self.width,
Eugene Van den Bulke
using named keys and format string method + renaming VideoIframe to VideoIFrame
r10253 height=self.height,
params=params)
Eugene Van den Bulke
VideoIframe from YouTubeVideo (simplified) + VimeoVideo
r10249
Eugene Van den Bulke
IFrame + ScribdDocument
r10260 class YouTubeVideo(IFrame):
Brian E. Granger
Added lib/display.py for extra display related things.
r4408 """Class for embedding a YouTube Video in an IPython session, based on its video id.
Bernardo B. Marques
remove all trailling spaces
r4872
Brian E. Granger
Added lib/display.py for extra display related things.
r4408 e.g. to embed the video on this page:
Bernardo B. Marques
remove all trailling spaces
r4872
Brian E. Granger
Added lib/display.py for extra display related things.
r4408 http://www.youtube.com/watch?v=foo
Bernardo B. Marques
remove all trailling spaces
r4872
Brian E. Granger
Added lib/display.py for extra display related things.
r4408 you would do:
Bernardo B. Marques
remove all trailling spaces
r4872
Brian E. Granger
Added lib/display.py for extra display related things.
r4408 vid = YouTubeVideo("foo")
display(vid)
Eugene Van den Bulke
VideoIframe from YouTubeVideo (simplified) + VimeoVideo
r10249
Danny Staple
Swapped specific start param for any params...
r8645 To start from 30 seconds:
Eugene Van den Bulke
VideoIframe from YouTubeVideo (simplified) + VimeoVideo
r10249
Danny Staple
Swapped specific start param for any params...
r8645 vid = YouTubeVideo("abc", start=30)
Danny Staple
Adding time offsets to the video...
r8639 display(vid)
Eugene Van den Bulke
VideoIframe from YouTubeVideo (simplified) + VimeoVideo
r10249
Danny Staple
Shortening documentation line length. ...
r8666 To calculate seconds from time as hours, minutes, seconds use:
start=int(timedelta(hours=1, minutes=46, seconds=40).total_seconds())
Danny Staple
Fixed some silly mistakes...
r8651
Eugene Van den Bulke
VideoIframe from YouTubeVideo (simplified) + VimeoVideo
r10249 Other parameters can be provided as documented at
Danny Staple
Swapped specific start param for any params...
r8645 https://developers.google.com/youtube/player_parameters#parameter-subheader
Brian E. Granger
Added lib/display.py for extra display related things.
r4408 """
Bernardo B. Marques
remove all trailling spaces
r4872
Eugene Van den Bulke
generic IFrame(src, with, height), refactored YouTubeVideo, VimeoVideo, ScribdDocument
r10262 def __init__(self, id, width=400, height=300, **kwargs):
src = "http://www.youtube.com/embed/{0}".format(id)
super(YouTubeVideo, self).__init__(src, width, height, **kwargs)
Eugene Van den Bulke
VideoIframe from YouTubeVideo (simplified) + VimeoVideo
r10249
Eugene Van den Bulke
tabulation adjustment
r10261 class VimeoVideo(IFrame):
Eugene Van den Bulke
VideoIframe from YouTubeVideo (simplified) + VimeoVideo
r10249 """
Class for embedding a Vimeo video in an IPython session, based on its video id.
"""
Eugene Van den Bulke
generic IFrame(src, with, height), refactored YouTubeVideo, VimeoVideo, ScribdDocument
r10262 def __init__(self, id, width=400, height=300, **kwargs):
src="http://player.vimeo.com/video/{0}".format(id)
super(VimeoVideo, self).__init__(src, width, height, **kwargs)
Eugene Van den Bulke
VideoIframe from YouTubeVideo (simplified) + VimeoVideo
r10249
Eugene Van den Bulke
IFrame + ScribdDocument
r10260 class ScribdDocument(IFrame):
"""
Class for embedding a Scribd document in an IPython session
Use the start_page params to specify a starting point in the document
Use the view_mode params to specify display type one off scroll | slideshow | book
e.g to Display Wes' foundational paper about PANDAS in book mode from page 3
ScribdDocument(71048089, width=800, height=400, start_page=3, view_mode="book")
"""
Eugene Van den Bulke
generic IFrame(src, with, height), refactored YouTubeVideo, VimeoVideo, ScribdDocument
r10262 def __init__(self, id, width=400, height=300, **kwargs):
src="http://www.scribd.com/embeds/{0}/content".format(id)
super(ScribdDocument, self).__init__(src, width, height, **kwargs)
Brian E. Granger
Added lib/display.py for extra display related things.
r4408
Greg Caporaso
renamed classes as recommended by @takluyver
r8365 class FileLink(object):
Greg Caporaso
Working versions of formatters for files and directories that are generated within an IPython notebook session. This is useful for integrating tools like QIIME with the IPython notebook as it allows users to generate QIIME's HTML visualizations and open them in new pages in their the web browser.
r8272 """Class for embedding a local file link in an IPython session, based on path
e.g. to embed a link that was generated in the IPython notebook as my/data.txt
Thomas Kluyver
Miscellaneous docs fixes
r9244 you would do::
Greg Caporaso
Working versions of formatters for files and directories that are generated within an IPython notebook session. This is useful for integrating tools like QIIME with the IPython notebook as it allows users to generate QIIME's HTML visualizations and open them in new pages in their the web browser.
r8272
Thomas Kluyver
Miscellaneous docs fixes
r9244 local_file = FileLink("my/data.txt")
display(local_file)
Eugene Van den Bulke
VideoIframe from YouTubeVideo (simplified) + VimeoVideo
r10249
Thomas Kluyver
Miscellaneous docs fixes
r9244 or in the HTML notebook, just::
Eugene Van den Bulke
VideoIframe from YouTubeVideo (simplified) + VimeoVideo
r10249
Thomas Kluyver
Miscellaneous docs fixes
r9244 FileLink("my/data.txt")
Greg Caporaso
Working versions of formatters for files and directories that are generated within an IPython notebook session. This is useful for integrating tools like QIIME with the IPython notebook as it allows users to generate QIIME's HTML visualizations and open them in new pages in their the web browser.
r8272 """
Eugene Van den Bulke
VideoIframe from YouTubeVideo (simplified) + VimeoVideo
r10249
Greg Caporaso
defined __repr__ for FileLink and FileLinks. this now presents the absolute path when run from an ipython session, and a link when run from the HTML notebook
r8442 html_link_str = "<a href='%s' target='_blank'>%s</a>"
Eugene Van den Bulke
VideoIframe from YouTubeVideo (simplified) + VimeoVideo
r10249
Greg Caporaso
Working versions of formatters for files and directories that are generated within an IPython notebook session. This is useful for integrating tools like QIIME with the IPython notebook as it allows users to generate QIIME's HTML visualizations and open them in new pages in their the web browser.
r8272 def __init__(self,
path,
Greg Caporaso
moved / to url_prefix rather than ''.join calls as this allows the user to override it
r8446 url_prefix='files/',
Greg Caporaso
removed leading underscore from parameters based on suggestion from @takluyver. the initial thought was that these would be private, but there's no harm in having them be public.
r8439 result_html_prefix='',
result_html_suffix='<br>'):
Greg Caporaso
Working versions of formatters for files and directories that are generated within an IPython notebook session. This is useful for integrating tools like QIIME with the IPython notebook as it allows users to generate QIIME's HTML visualizations and open them in new pages in their the web browser.
r8272 """
Thomas Kluyver
Miscellaneous docs fixes
r9244 Parameters
----------
path : str
path to the file or directory that should be formatted
directory_prefix : str
prefix to be prepended to all files to form a working link [default:
'files']
result_html_prefix : str
text to append to beginning to link [default: none]
Eugene Van den Bulke
VideoIframe from YouTubeVideo (simplified) + VimeoVideo
r10249 result_html_suffix : str
Thomas Kluyver
Miscellaneous docs fixes
r9244 text to append at the end of link [default: '<br>']
Greg Caporaso
Working versions of formatters for files and directories that are generated within an IPython notebook session. This is useful for integrating tools like QIIME with the IPython notebook as it allows users to generate QIIME's HTML visualizations and open them in new pages in their the web browser.
r8272 """
Greg Caporaso
removing DirectoryLink class (which was an alias for FileLink) and modifying FileLink to raise an error if a directory is provided. @ellisonbg pointed out that these give a 404. I think removing this for now is the way to go as we don't have an immediate use case for DirectoryLink - FileLinks is what we would want users to call for linking to a directory.
r8835 if isdir(path):
raise ValueError,\
Greg Caporaso
added tests to confirm that error is raise when FileLink is passed a directory. Also specifically disallowed passing a file to FileLinks for consistency.
r8836 ("Cannot display a directory using FileLink. "
Greg Caporaso
removing DirectoryLink class (which was an alias for FileLink) and modifying FileLink to raise an error if a directory is provided. @ellisonbg pointed out that these give a 404. I think removing this for now is the way to go as we don't have an immediate use case for DirectoryLink - FileLinks is what we would want users to call for linking to a directory.
r8835 "Use FileLinks to display '%s'." % path)
Greg Caporaso
Working versions of formatters for files and directories that are generated within an IPython notebook session. This is useful for integrating tools like QIIME with the IPython notebook as it allows users to generate QIIME's HTML visualizations and open them in new pages in their the web browser.
r8272 self.path = path
Greg Caporaso
updated parameter name based on suggestion from @takluyver
r8437 self.url_prefix = url_prefix
Greg Caporaso
removed leading underscore from parameters based on suggestion from @takluyver. the initial thought was that these would be private, but there's no harm in having them be public.
r8439 self.result_html_prefix = result_html_prefix
self.result_html_suffix = result_html_suffix
Eugene Van den Bulke
VideoIframe from YouTubeVideo (simplified) + VimeoVideo
r10249
Greg Caporaso
Working versions of formatters for files and directories that are generated within an IPython notebook session. This is useful for integrating tools like QIIME with the IPython notebook as it allows users to generate QIIME's HTML visualizations and open them in new pages in their the web browser.
r8272 def _format_path(self):
Greg Caporaso
moved / to url_prefix rather than ''.join calls as this allows the user to override it
r8446 fp = ''.join([self.url_prefix,self.path])
Greg Caporaso
removed leading underscore from parameters based on suggestion from @takluyver. the initial thought was that these would be private, but there's no harm in having them be public.
r8439 return ''.join([self.result_html_prefix,
Greg Caporaso
defined __repr__ for FileLink and FileLinks. this now presents the absolute path when run from an ipython session, and a link when run from the HTML notebook
r8442 self.html_link_str % (fp, self.path),
Greg Caporaso
removed leading underscore from parameters based on suggestion from @takluyver. the initial thought was that these would be private, but there's no harm in having them be public.
r8439 self.result_html_suffix])
Eugene Van den Bulke
VideoIframe from YouTubeVideo (simplified) + VimeoVideo
r10249
Greg Caporaso
Working versions of formatters for files and directories that are generated within an IPython notebook session. This is useful for integrating tools like QIIME with the IPython notebook as it allows users to generate QIIME's HTML visualizations and open them in new pages in their the web browser.
r8272 def _repr_html_(self):
Greg Caporaso
defined __repr__ for FileLink and FileLinks. this now presents the absolute path when run from an ipython session, and a link when run from the HTML notebook
r8442 """return html link to file
Greg Caporaso
Working versions of formatters for files and directories that are generated within an IPython notebook session. This is useful for integrating tools like QIIME with the IPython notebook as it allows users to generate QIIME's HTML visualizations and open them in new pages in their the web browser.
r8272 """
if not exists(self.path):
Eugene Van den Bulke
VideoIframe from YouTubeVideo (simplified) + VimeoVideo
r10249 return ("Path (<tt>%s</tt>) doesn't exist. "
Greg Caporaso
Working versions of formatters for files and directories that are generated within an IPython notebook session. This is useful for integrating tools like QIIME with the IPython notebook as it allows users to generate QIIME's HTML visualizations and open them in new pages in their the web browser.
r8272 "It may still be in the process of "
"being generated, or you may have the "
"incorrect path." % self.path)
Eugene Van den Bulke
VideoIframe from YouTubeVideo (simplified) + VimeoVideo
r10249
Greg Caporaso
Working versions of formatters for files and directories that are generated within an IPython notebook session. This is useful for integrating tools like QIIME with the IPython notebook as it allows users to generate QIIME's HTML visualizations and open them in new pages in their the web browser.
r8272 return self._format_path()
Eugene Van den Bulke
VideoIframe from YouTubeVideo (simplified) + VimeoVideo
r10249
Greg Caporaso
defined __repr__ for FileLink and FileLinks. this now presents the absolute path when run from an ipython session, and a link when run from the HTML notebook
r8442 def __repr__(self):
Greg Caporaso
improved behavior of FileLinks.__repr__ to be more like the behvior of _repr_html_
r8443 """return absolute path to file
Greg Caporaso
defined __repr__ for FileLink and FileLinks. this now presents the absolute path when run from an ipython session, and a link when run from the HTML notebook
r8442 """
return abspath(self.path)
Greg Caporaso
Working versions of formatters for files and directories that are generated within an IPython notebook session. This is useful for integrating tools like QIIME with the IPython notebook as it allows users to generate QIIME's HTML visualizations and open them in new pages in their the web browser.
r8272
Greg Caporaso
renamed classes as recommended by @takluyver
r8365 class FileLinks(FileLink):
Greg Caporaso
Working versions of formatters for files and directories that are generated within an IPython notebook session. This is useful for integrating tools like QIIME with the IPython notebook as it allows users to generate QIIME's HTML visualizations and open them in new pages in their the web browser.
r8272 """Class for embedding local file links in an IPython session, based on path
e.g. to embed links to files that were generated in the IPython notebook under my/data
you would do:
Greg Caporaso
renamed classes as recommended by @takluyver
r8365 local_files = FileLinks("my/data")
Greg Caporaso
Working versions of formatters for files and directories that are generated within an IPython notebook session. This is useful for integrating tools like QIIME with the IPython notebook as it allows users to generate QIIME's HTML visualizations and open them in new pages in their the web browser.
r8272 display(local_files)
Eugene Van den Bulke
VideoIframe from YouTubeVideo (simplified) + VimeoVideo
r10249
Greg Caporaso
documentation modification
r8276 or in the HTML notebook, just
Eugene Van den Bulke
VideoIframe from YouTubeVideo (simplified) + VimeoVideo
r10249
Greg Caporaso
renamed classes as recommended by @takluyver
r8365 FileLinks("my/data")
Eugene Van den Bulke
VideoIframe from YouTubeVideo (simplified) + VimeoVideo
r10249
Greg Caporaso
Working versions of formatters for files and directories that are generated within an IPython notebook session. This is useful for integrating tools like QIIME with the IPython notebook as it allows users to generate QIIME's HTML visualizations and open them in new pages in their the web browser.
r8272 """
def __init__(self,
path,
Greg Caporaso
moved / to url_prefix rather than ''.join calls as this allows the user to override it
r8446 url_prefix='files/',
Greg Caporaso
removed leading underscore from parameters based on suggestion from @takluyver. the initial thought was that these would be private, but there's no harm in having them be public.
r8439 included_suffixes=None,
result_html_prefix='',
Greg Caporaso
improved formatting for FileLinks
r8619 result_html_suffix='<br>',
notebook_display_formatter=None,
terminal_display_formatter=None):
Greg Caporaso
Working versions of formatters for files and directories that are generated within an IPython notebook session. This is useful for integrating tools like QIIME with the IPython notebook as it allows users to generate QIIME's HTML visualizations and open them in new pages in their the web browser.
r8272 """
included_suffixes : list of filename suffixes to include when
formatting output [default: include all files]
Eugene Van den Bulke
VideoIframe from YouTubeVideo (simplified) + VimeoVideo
r10249
See the FileLink (baseclass of LocalDirectory) docstring for
Greg Caporaso
Working versions of formatters for files and directories that are generated within an IPython notebook session. This is useful for integrating tools like QIIME with the IPython notebook as it allows users to generate QIIME's HTML visualizations and open them in new pages in their the web browser.
r8272 information on additional parameters.
Eugene Van den Bulke
VideoIframe from YouTubeVideo (simplified) + VimeoVideo
r10249
notebook_display_formatter : func used to format links for display
Greg Caporaso
updated documentation on display formatters
r8803 in the notebook. See discussion of formatter function below.
Eugene Van den Bulke
VideoIframe from YouTubeVideo (simplified) + VimeoVideo
r10249
terminal_display_formatter : func used to format links for display
Greg Caporaso
updated documentation on display formatters
r8803 in the terminal. See discussion of formatter function below.
Eugene Van den Bulke
VideoIframe from YouTubeVideo (simplified) + VimeoVideo
r10249
Greg Caporaso
updated documentation on display formatters
r8803 Passing custom formatter functions
----------------------------------
Formatter functions must be of the form:
f(dirname, fnames, included_suffixes)
Eugene Van den Bulke
VideoIframe from YouTubeVideo (simplified) + VimeoVideo
r10249 dirname : the name of a directory (a string),
fnames : a list of the files in that directory
included_suffixes : a list of the file suffixes that should be
included in the output (passing None means
Greg Caporaso
updated documentation on display formatters
r8803 to include all suffixes in the output in
the built-in formatters)
Eugene Van den Bulke
VideoIframe from YouTubeVideo (simplified) + VimeoVideo
r10249
returns a list of lines that should will be print in the
Greg Caporaso
updated documentation on display formatters
r8803 notebook (if passing notebook_display_formatter) or the terminal
Eugene Van den Bulke
VideoIframe from YouTubeVideo (simplified) + VimeoVideo
r10249 (if passing terminal_display_formatter). This function is iterated
over for each directory in self.path. Default formatters are in
Greg Caporaso
updated documentation on display formatters
r8803 place, can be passed here to support alternative formatting.
Eugene Van den Bulke
VideoIframe from YouTubeVideo (simplified) + VimeoVideo
r10249
Greg Caporaso
Working versions of formatters for files and directories that are generated within an IPython notebook session. This is useful for integrating tools like QIIME with the IPython notebook as it allows users to generate QIIME's HTML visualizations and open them in new pages in their the web browser.
r8272 """
Greg Caporaso
added tests to confirm that error is raise when FileLink is passed a directory. Also specifically disallowed passing a file to FileLinks for consistency.
r8836 if isfile(path):
raise ValueError,\
("Cannot display a file using FileLinks. "
"Use FileLink to display '%s'." % path)
Greg Caporaso
removed leading underscore from parameters based on suggestion from @takluyver. the initial thought was that these would be private, but there's no harm in having them be public.
r8439 self.included_suffixes = included_suffixes
Greg Caporaso
noew removes trailing slashes if they are provided in input so the output can be formatted consistently by always appending a trailing slash (which previously could result in two trailing slashes if the input path included a trailing slash)
r8631 # remove trailing slashs for more consistent output formatting
path = path.rstrip('/')
Eugene Van den Bulke
VideoIframe from YouTubeVideo (simplified) + VimeoVideo
r10249
Greg Caporaso
removing DirectoryLink class (which was an alias for FileLink) and modifying FileLink to raise an error if a directory is provided. @ellisonbg pointed out that these give a 404. I think removing this for now is the way to go as we don't have an immediate use case for DirectoryLink - FileLinks is what we would want users to call for linking to a directory.
r8835 self.path = path
self.url_prefix = url_prefix
self.result_html_prefix = result_html_prefix
self.result_html_suffix = result_html_suffix
Eugene Van den Bulke
VideoIframe from YouTubeVideo (simplified) + VimeoVideo
r10249
Greg Caporaso
cleaned up to reduce duplicated code
r8624 self.notebook_display_formatter = \
Greg Caporaso
fixed bug in test and in support for passing alternative formatters
r8626 notebook_display_formatter or self._get_notebook_display_formatter()
Greg Caporaso
cleaned up to reduce duplicated code
r8624 self.terminal_display_formatter = \
Greg Caporaso
fixed bug in test and in support for passing alternative formatters
r8626 terminal_display_formatter or self._get_terminal_display_formatter()
Eugene Van den Bulke
VideoIframe from YouTubeVideo (simplified) + VimeoVideo
r10249
Greg Caporaso
cleaned up to reduce duplicated code
r8624 def _get_display_formatter(self,
dirname_output_format,
fname_output_format,
Greg Caporaso
this should address the failure in #2732...
r9093 fp_format,
fp_cleaner=None):
Greg Caporaso
updated documentation on display formatters
r8803 """ generate built-in formatter function
Eugene Van den Bulke
VideoIframe from YouTubeVideo (simplified) + VimeoVideo
r10249
this is used to define both the notebook and terminal built-in
Greg Caporaso
updated documentation on display formatters
r8803 formatters as they only differ by some wrapper text for each entry
Eugene Van den Bulke
VideoIframe from YouTubeVideo (simplified) + VimeoVideo
r10249
dirname_output_format: string to use for formatting directory
Greg Caporaso
noew removes trailing slashes if they are provided in input so the output can be formatted consistently by always appending a trailing slash (which previously could result in two trailing slashes if the input path included a trailing slash)
r8631 names, dirname will be substituted for a single "%s" which
must appear in this string
fname_output_format: string to use for formatting file names,
if a single "%s" appears in the string, fname will be substituted
Eugene Van den Bulke
VideoIframe from YouTubeVideo (simplified) + VimeoVideo
r10249 if two "%s" appear in the string, the path to fname will be
Greg Caporaso
noew removes trailing slashes if they are provided in input so the output can be formatted consistently by always appending a trailing slash (which previously could result in two trailing slashes if the input path included a trailing slash)
r8631 substituted for the first and fname will be substituted for the
second
fp_format: string to use for formatting filepaths, must contain
exactly two "%s" and the dirname will be subsituted for the first
and fname will be substituted for the second
"""
Greg Caporaso
added included_suffixes as an option to display formatters - previously it wasn't possible to pass these in if defining custom display formatters
r8802 def f(dirname, fnames, included_suffixes=None):
Greg Caporaso
updating to make interface more intuitive now that we're not using os.path.walk
r8801 result = []
Eugene Van den Bulke
VideoIframe from YouTubeVideo (simplified) + VimeoVideo
r10249 # begin by figuring out which filenames, if any,
Greg Caporaso
improved formatting for FileLinks
r8619 # are going to be displayed
display_fnames = []
for fname in fnames:
if (isfile(join(dirname,fname)) and
(included_suffixes == None or
splitext(fname)[1] in included_suffixes)):
display_fnames.append(fname)
Eugene Van den Bulke
VideoIframe from YouTubeVideo (simplified) + VimeoVideo
r10249
Greg Caporaso
improved formatting for FileLinks
r8619 if len(display_fnames) == 0:
Greg Caporaso
noew removes trailing slashes if they are provided in input so the output can be formatted consistently by always appending a trailing slash (which previously could result in two trailing slashes if the input path included a trailing slash)
r8631 # if there are no filenames to display, don't print anything
# (not even the directory name)
Greg Caporaso
improved formatting for FileLinks
r8619 pass
else:
Eugene Van den Bulke
VideoIframe from YouTubeVideo (simplified) + VimeoVideo
r10249 # otherwise print the formatted directory name followed by
Greg Caporaso
noew removes trailing slashes if they are provided in input so the output can be formatted consistently by always appending a trailing slash (which previously could result in two trailing slashes if the input path included a trailing slash)
r8631 # the formatted filenames
Greg Caporaso
cleaned up to reduce duplicated code
r8624 dirname_output_line = dirname_output_format % dirname
Greg Caporaso
updating to make interface more intuitive now that we're not using os.path.walk
r8801 result.append(dirname_output_line)
Greg Caporaso
improved formatting for FileLinks
r8619 for fname in display_fnames:
Greg Caporaso
cleaned up to reduce duplicated code
r8624 fp = fp_format % (dirname,fname)
Greg Caporaso
updated based on comment from @takluyver
r9305 if fp_cleaner is not None:
Greg Caporaso
this should address the failure in #2732...
r9093 fp = fp_cleaner(fp)
Greg Caporaso
cleaned up to reduce duplicated code
r8624 try:
# output can include both a filepath and a filename...
fname_output_line = fname_output_format % (fp, fname)
except TypeError:
# ... or just a single filepath
fname_output_line = fname_output_format % fname
Greg Caporaso
updating to make interface more intuitive now that we're not using os.path.walk
r8801 result.append(fname_output_line)
return result
Greg Caporaso
improved formatting for FileLinks
r8619 return f
Greg Caporaso
cleaned up to reduce duplicated code
r8624 def _get_notebook_display_formatter(self,
spacer="&nbsp;&nbsp;"):
Greg Caporaso
added included_suffixes as an option to display formatters - previously it wasn't possible to pass these in if defining custom display formatters
r8802 """ generate function to use for notebook formatting
Greg Caporaso
noew removes trailing slashes if they are provided in input so the output can be formatted consistently by always appending a trailing slash (which previously could result in two trailing slashes if the input path included a trailing slash)
r8631 """
Greg Caporaso
cleaned up to reduce duplicated code
r8624 dirname_output_format = \
Greg Caporaso
noew removes trailing slashes if they are provided in input so the output can be formatted consistently by always appending a trailing slash (which previously could result in two trailing slashes if the input path included a trailing slash)
r8631 self.result_html_prefix + "%s/" + self.result_html_suffix
Greg Caporaso
cleaned up to reduce duplicated code
r8624 fname_output_format = \
self.result_html_prefix + spacer + self.html_link_str + self.result_html_suffix
fp_format = self.url_prefix + '%s/%s'
Greg Caporaso
this should address the failure in #2732...
r9093 if sep == "\\":
Eugene Van den Bulke
VideoIframe from YouTubeVideo (simplified) + VimeoVideo
r10249 # Working on a platform where the path separator is "\", so
Greg Caporaso
this should address the failure in #2732...
r9093 # must convert these to "/" for generating a URI
def fp_cleaner(fp):
# Replace all occurences of backslash ("\") with a forward
# slash ("/") - this is necessary on windows when a path is
# provided as input, but we must link to a URI
return fp.replace('\\','/')
else:
fp_cleaner = None
Eugene Van den Bulke
VideoIframe from YouTubeVideo (simplified) + VimeoVideo
r10249
Greg Caporaso
cleaned up to reduce duplicated code
r8624 return self._get_display_formatter(dirname_output_format,
fname_output_format,
Greg Caporaso
this should address the failure in #2732...
r9093 fp_format,
fp_cleaner)
Greg Caporaso
improved formatting for FileLinks
r8619
Greg Caporaso
cleaned up to reduce duplicated code
r8624 def _get_terminal_display_formatter(self,
spacer=" "):
Greg Caporaso
added included_suffixes as an option to display formatters - previously it wasn't possible to pass these in if defining custom display formatters
r8802 """ generate function to use for terminal formatting
Greg Caporaso
noew removes trailing slashes if they are provided in input so the output can be formatted consistently by always appending a trailing slash (which previously could result in two trailing slashes if the input path included a trailing slash)
r8631 """
dirname_output_format = "%s/"
Greg Caporaso
cleaned up to reduce duplicated code
r8624 fname_output_format = spacer + "%s"
fp_format = '%s/%s'
Eugene Van den Bulke
VideoIframe from YouTubeVideo (simplified) + VimeoVideo
r10249
Greg Caporaso
cleaned up to reduce duplicated code
r8624 return self._get_display_formatter(dirname_output_format,
fname_output_format,
fp_format)
Eugene Van den Bulke
VideoIframe from YouTubeVideo (simplified) + VimeoVideo
r10249
Greg Caporaso
improved formatting for FileLinks
r8619 def _format_path(self):
result_lines = []
Greg Caporaso
updated to use os.walk instead of os.path.walk - os.path.walk is not supported in Python 3
r8800 walked_dir = list(walk(self.path))
walked_dir.sort()
for dirname, subdirs, fnames in walked_dir:
Greg Caporaso
added included_suffixes as an option to display formatters - previously it wasn't possible to pass these in if defining custom display formatters
r8802 result_lines += self.notebook_display_formatter(dirname, fnames, self.included_suffixes)
Greg Caporaso
improved formatting for FileLinks
r8619 return '\n'.join(result_lines)
Eugene Van den Bulke
VideoIframe from YouTubeVideo (simplified) + VimeoVideo
r10249
Greg Caporaso
improved behavior of FileLinks.__repr__ to be more like the behvior of _repr_html_
r8443 def __repr__(self):
"""return newline-separated absolute paths
"""
Greg Caporaso
improved formatting for FileLinks
r8619 result_lines = []
Greg Caporaso
updated to use os.walk instead of os.path.walk - os.path.walk is not supported in Python 3
r8800 walked_dir = list(walk(self.path))
walked_dir.sort()
for dirname, subdirs, fnames in walked_dir:
Greg Caporaso
added included_suffixes as an option to display formatters - previously it wasn't possible to pass these in if defining custom display formatters
r8802 result_lines += self.terminal_display_formatter(dirname, fnames, self.included_suffixes)
Greg Caporaso
updating my code to incorporate upstream changes; resolved a merge conflict in IPython/lib/display.py
r8798 return '\n'.join(result_lines)