def embed(file_owner_or_url, file_id=None, width="100%", height=525): """Embeds existing Plotly figure in IPython Notebook Plotly uniquely identifies figures with a 'file_owner'/'file_id' pair. Since each file is given a corresponding unique url, you may also simply pass a valid plotly url as the first argument. Note, if you're using a file_owner string as the first argument, you MUST specify a `file_id` keyword argument. Else, if you're using a url string as the first argument, you MUST NOT specify a `file_id` keyword argument, or file_id must be set to Python's None value. Positional arguments: file_owner_or_url (string) -- a valid plotly username OR a valid plotly url Keyword arguments: file_id (default=None) -- an int or string that can be converted to int if you're using a url, don't fill this in! width (default="100%") -- an int or string corresp. to width of the figure height (default="525") -- same as width but corresp. to the height of the figure """ try: s = get_embed(file_owner_or_url, file_id=file_id, width=width, height=height) # see if we are in the SageMath Cloud if sage_salvus: return sage_salvus.html(s, hide=False) except: pass if ipython_core_display: if file_id: plotly_domain = ( session.get_session_config().get('plotly_domain') or get_config_file()['plotly_domain'] ) url = "{plotly_domain}/~{un}/{fid}".format( plotly_domain=plotly_domain, un=file_owner_or_url, fid=file_id) else: url = file_owner_or_url return PlotlyDisplay(url, width, height) else: if (get_config_defaults()['plotly_domain'] != session.get_session_config()['plotly_domain']): feedback_contact = 'Visit support.plot.ly' else: # different domain likely means enterprise feedback_contact = 'Contact your On-Premise account executive' warnings.warn( "Looks like you're not using IPython or Sage to embed this " "plot. If you just want the *embed code*,\ntry using " "`get_embed()` instead." '\nQuestions? {}'.format(feedback_contact))
def embed(file_owner_or_url, file_id=None, width="100%", height=525): """Embeds existing Plotly figure in IPython Notebook Plotly uniquely identifies figures with a 'file_owner'/'file_id' pair. Since each file is given a corresponding unique url, you may also simply pass a valid plotly url as the first argument. Note, if you're using a file_owner string as the first argument, you MUST specify a `file_id` keyword argument. Else, if you're using a url string as the first argument, you MUST NOT specify a `file_id` keyword argument, or file_id must be set to Python's None value. Positional arguments: file_owner_or_url (string) -- a valid plotly username OR a valid plotly url Keyword arguments: file_id (default=None) -- an int or string that can be converted to int if you're using a url, don't fill this in! width (default="100%") -- an int or string corresp. to width of the figure height (default="525") -- same as width but corresp. to the height of the figure """ try: s = get_embed(file_owner_or_url, file_id=file_id, width=width, height=height) # see if we are in the SageMath Cloud if sage_salvus: return sage_salvus.html(s, hide=False) except: pass if ipython_core_display: if file_id: plotly_domain = (session.get_session_config().get("plotly_domain") or get_config_file()["plotly_domain"]) url = "{plotly_domain}/~{un}/{fid}".format( plotly_domain=plotly_domain, un=file_owner_or_url, fid=file_id) else: url = file_owner_or_url embed_url = _get_embed_url(url, file_id) return ipython_display.IFrame(embed_url, width, height) else: if (get_config_defaults()["plotly_domain"] != session.get_session_config()["plotly_domain"]): feedback_contact = "Visit support.plot.ly" else: # different domain likely means enterprise feedback_contact = "Contact your On-Premise account executive" warnings.warn( "Looks like you're not using IPython or Sage to embed this " "plot. If you just want the *embed code*,\ntry using " "`get_embed()` instead." "\nQuestions? {}".format(feedback_contact))
def _get_embed_url(file_owner_or_url, file_id=None): plotly_rest_url = ( session.get_session_config().get("plotly_domain") or get_config_file()["plotly_domain"] ) if file_id is None: # assume we're using a url url = file_owner_or_url if url[: len(plotly_rest_url)] != plotly_rest_url: raise _plotly_utils.exceptions.PlotlyError( "Because you didn't supply a 'file_id' in the call, " "we're assuming you're trying to snag a figure from a url. " "You supplied the url, '{0}', we expected it to start with " "'{1}'." "\nRun help on this function for more information." "".format(url, plotly_rest_url) ) urlsplit = urllib.parse.urlparse(url) file_owner = urlsplit.path.split("/")[1].split("~")[1] file_id = urlsplit.path.split("/")[2] # to check for share_key we check urlsplit.query query_dict = urllib.parse.parse_qs(urlsplit.query) if query_dict: share_key = query_dict["share_key"][-1] else: share_key = "" else: file_owner = file_owner_or_url share_key = "" try: test_if_int = int(file_id) except ValueError: raise _plotly_utils.exceptions.PlotlyError( "The 'file_id' argument was not able to be converted into an " "integer number. Make sure that the positional 'file_id' argument " "is a number that can be converted into an integer or a string " "that can be converted into an integer." ) if int(file_id) < 0: raise _plotly_utils.exceptions.PlotlyError( "The 'file_id' argument must be a non-negative number." ) if share_key is "": return "{plotly_rest_url}/~{file_owner}/{file_id}.embed".format( plotly_rest_url=plotly_rest_url, file_owner=file_owner, file_id=file_id ) else: return ( "{plotly_rest_url}/~{file_owner}/" "{file_id}.embed?share_key={share_key}" ).format( plotly_rest_url=plotly_rest_url, file_owner=file_owner, file_id=file_id, share_key=share_key, )
def get_config(): """Returns either module config or file config.""" config = tools.get_config_file() session_config = session.get_session_config() for config_key in config: # checking for not false, but truthy value here is the desired behavior session_value = session_config.get(config_key) if session_value is False or session_value: config[config_key] = session_value return config
def get_embed(file_owner_or_url, file_id=None, width="100%", height=525): """Returns HTML code to embed figure on a webpage as an <iframe> Plotly uniquely identifies figures with a 'file_owner'/'file_id' pair. Since each file is given a corresponding unique url, you may also simply pass a valid plotly url as the first argument. Note, if you're using a file_owner string as the first argument, you MUST specify a `file_id` keyword argument. Else, if you're using a url string as the first argument, you MUST NOT specify a `file_id` keyword argument, or file_id must be set to Python's None value. Positional arguments: file_owner_or_url (string) -- a valid plotly username OR a valid plotly url Keyword arguments: file_id (default=None) -- an int or string that can be converted to int if you're using a url, don't fill this in! width (default="100%") -- an int or string corresp. to width of the figure height (default="525") -- same as width but corresp. to the height of the figure """ plotly_rest_url = (session.get_session_config().get('plotly_domain') or get_config_file()['plotly_domain']) if file_id is None: # assume we're using a url url = file_owner_or_url if url[:len(plotly_rest_url)] != plotly_rest_url: raise _plotly_utils.exceptions.PlotlyError( "Because you didn't supply a 'file_id' in the call, " "we're assuming you're trying to snag a figure from a url. " "You supplied the url, '{0}', we expected it to start with " "'{1}'." "\nRun help on this function for more information." "".format(url, plotly_rest_url)) urlsplit = six.moves.urllib.parse.urlparse(url) file_owner = urlsplit.path.split('/')[1].split('~')[1] file_id = urlsplit.path.split('/')[2] # to check for share_key we check urlsplit.query query_dict = six.moves.urllib.parse.parse_qs(urlsplit.query) if query_dict: share_key = query_dict['share_key'][-1] else: share_key = '' else: file_owner = file_owner_or_url share_key = '' try: test_if_int = int(file_id) except ValueError: raise _plotly_utils.exceptions.PlotlyError( "The 'file_id' argument was not able to be converted into an " "integer number. Make sure that the positional 'file_id' argument " "is a number that can be converted into an integer or a string " "that can be converted into an integer." ) if int(file_id) < 0: raise _plotly_utils.exceptions.PlotlyError( "The 'file_id' argument must be a non-negative number." ) if share_key is '': s = ("<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\" " "seamless=\"seamless\" " "src=\"{plotly_rest_url}/" "~{file_owner}/{file_id}.embed\" " "height=\"{iframe_height}\" width=\"{iframe_width}\">" "</iframe>").format( plotly_rest_url=plotly_rest_url, file_owner=file_owner, file_id=file_id, iframe_height=height, iframe_width=width) else: s = ("<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\" " "seamless=\"seamless\" " "src=\"{plotly_rest_url}/" "~{file_owner}/{file_id}.embed?share_key={share_key}\" " "height=\"{iframe_height}\" width=\"{iframe_width}\">" "</iframe>").format( plotly_rest_url=plotly_rest_url, file_owner=file_owner, file_id=file_id, share_key=share_key, iframe_height=height, iframe_width=width) return s
def get_embed(file_owner_or_url, file_id=None, width="100%", height=525): """Returns HTML code to embed figure on a webpage as an <iframe> Plotly uniquely identifies figures with a 'file_owner'/'file_id' pair. Since each file is given a corresponding unique url, you may also simply pass a valid plotly url as the first argument. Note, if you're using a file_owner string as the first argument, you MUST specify a `file_id` keyword argument. Else, if you're using a url string as the first argument, you MUST NOT specify a `file_id` keyword argument, or file_id must be set to Python's None value. Positional arguments: file_owner_or_url (string) -- a valid plotly username OR a valid plotly url Keyword arguments: file_id (default=None) -- an int or string that can be converted to int if you're using a url, don't fill this in! width (default="100%") -- an int or string corresp. to width of the figure height (default="525") -- same as width but corresp. to the height of the figure """ plotly_rest_url = (session.get_session_config().get('plotly_domain') or get_config_file()['plotly_domain']) if file_id is None: # assume we're using a url url = file_owner_or_url if url[:len(plotly_rest_url)] != plotly_rest_url: raise _plotly_utils.exceptions.PlotlyError( "Because you didn't supply a 'file_id' in the call, " "we're assuming you're trying to snag a figure from a url. " "You supplied the url, '{0}', we expected it to start with " "'{1}'." "\nRun help on this function for more information." "".format(url, plotly_rest_url)) urlsplit = six.moves.urllib.parse.urlparse(url) file_owner = urlsplit.path.split('/')[1].split('~')[1] file_id = urlsplit.path.split('/')[2] # to check for share_key we check urlsplit.query query_dict = six.moves.urllib.parse.parse_qs(urlsplit.query) if query_dict: share_key = query_dict['share_key'][-1] else: share_key = '' else: file_owner = file_owner_or_url share_key = '' try: test_if_int = int(file_id) except ValueError: raise _plotly_utils.exceptions.PlotlyError( "The 'file_id' argument was not able to be converted into an " "integer number. Make sure that the positional 'file_id' argument " "is a number that can be converted into an integer or a string " "that can be converted into an integer.") if int(file_id) < 0: raise _plotly_utils.exceptions.PlotlyError( "The 'file_id' argument must be a non-negative number.") if share_key is '': s = ("<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\" " "seamless=\"seamless\" " "src=\"{plotly_rest_url}/" "~{file_owner}/{file_id}.embed\" " "height=\"{iframe_height}\" width=\"{iframe_width}\">" "</iframe>").format(plotly_rest_url=plotly_rest_url, file_owner=file_owner, file_id=file_id, iframe_height=height, iframe_width=width) else: s = ("<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\" " "seamless=\"seamless\" " "src=\"{plotly_rest_url}/" "~{file_owner}/{file_id}.embed?share_key={share_key}\" " "height=\"{iframe_height}\" width=\"{iframe_width}\">" "</iframe>").format(plotly_rest_url=plotly_rest_url, file_owner=file_owner, file_id=file_id, share_key=share_key, iframe_height=height, iframe_width=width) return s