Пример #1
0
def ensure_local_plotly_files():
    """Ensure that filesystem is setup/filled out in a valid way"""
    if _file_permissions:
        if not os.path.isdir(PLOTLY_DIR):
            os.mkdir(PLOTLY_DIR)
        for fn in [CREDENTIALS_FILE, CONFIG_FILE]:
            contents = utils.load_json_dict(fn)
            for key, val in list(_FILE_CONTENT[fn].items()):
                # TODO: removed type checking below, may want to revisit
                if key not in contents:
                    contents[key] = val
            contents_keys = list(contents.keys())
            for key in contents_keys:
                if key not in _FILE_CONTENT[fn]:
                    del contents[key]
            utils.save_json_dict(fn, contents)
    else:
        warnings.warn(
            "Looks like you don't have 'read-write' permission to "
            "your 'home' ('~') directory or to our '~/.plotly' "
            "directory. That means plotly's python api can't setup "
            "local configuration files. No problem though! You'll "
            "just have to sign-in using 'plotly.plotly.sign_in()'. For help "
            "with that: 'help(plotly.plotly.sign_in)'."
            "\nQuestions? [email protected]")
Пример #2
0
def get_graph_reference():
    """
    Attempts to load local copy of graph reference or makes GET request if DNE.

    :return: (dict) The graph reference.
    :raises: (PlotlyError) When graph reference DNE and GET request fails.

    """
    default_config = files.FILE_CONTENT[files.CONFIG_FILE]
    if files.check_file_permissions():
        graph_reference = utils.load_json_dict(files.GRAPH_REFERENCE_FILE)
        config = utils.load_json_dict(files.CONFIG_FILE)

        # TODO: https://github.com/plotly/python-api/issues/293
        plotly_api_domain = config.get('plotly_api_domain',
                                       default_config['plotly_api_domain'])
    else:
        graph_reference = {}
        plotly_api_domain = default_config['plotly_api_domain']

    sha1 = hashlib.sha1(six.b(str(graph_reference))).hexdigest()

    graph_reference_url = '{}{}?sha1={}'.format(plotly_api_domain,
                                                GRAPH_REFERENCE_PATH, sha1)

    try:
        response = http_requests.get(graph_reference_url,
                                timeout=GRAPH_REFERENCE_DOWNLOAD_TIMEOUT)
        response.raise_for_status()
    except http_requests.exceptions.RequestException:
        if not graph_reference:
            path = os.path.join('graph_reference', 'default-schema.json')
            s = resource_string('plotly', path).decode('utf-8')
            graph_reference = json.loads(s)
    else:
        if six.PY3:
            content = str(response.content, encoding='utf-8')
        else:
            content = response.content
        data = json.loads(content)
        if data['modified']:
            graph_reference = data['schema']

    return utils.decode_unicode(graph_reference)
Пример #3
0
def get_config_file(*args):
    """Return specified args from `~/.plotly_credentials`. as dict.

    Returns all if no arguments are specified.

    Example:
        get_credentials_file('username')

    """
    if _file_permissions:
        ensure_local_plotly_files()  # make sure what's there is OK
        return utils.load_json_dict(CONFIG_FILE, *args)
    else:
        return _FILE_CONTENT[CONFIG_FILE]
Пример #4
0
def get_config_file(*args):
    """Return specified args from `~/.plotly_credentials`. as dict.

    Returns all if no arguments are specified.

    Example:
        get_credentials_file('username')

    """
    if _file_permissions:
        ensure_local_plotly_files()  # make sure what's there is OK
        return utils.load_json_dict(CONFIG_FILE, *args)
    else:
        return _FILE_CONTENT[CONFIG_FILE]
Пример #5
0
def ensure_local_plotly_files():
    """Ensure that filesystem is setup/filled out in a valid way"""
    if _file_permissions:
        for fn in [CREDENTIALS_FILE, CONFIG_FILE]:
            utils.ensure_file_exists(fn)
            contents = utils.load_json_dict(fn)
            for key, val in list(_FILE_CONTENT[fn].items()):
                # TODO: removed type checking below, may want to revisit
                if key not in contents:
                    contents[key] = val
            contents_keys = list(contents.keys())
            for key in contents_keys:
                if key not in _FILE_CONTENT[fn]:
                    del contents[key]
            utils.save_json_dict(fn, contents)
    else:
        warnings.warn("Looks like you don't have 'read-write' permission to "
                      "your 'home' ('~') directory or to our '~/.plotly' "
                      "directory. That means plotly's python api can't setup "
                      "local configuration files. No problem though! You'll "
                      "just have to sign-in using 'plotly.plotly.sign_in()'. For help "
                      "with that: 'help(plotly.plotly.sign_in)'."
                      "\nQuestions? [email protected]")
Пример #6
0
 def stash_files(self):
     self._credentials = utils.load_json_dict(files.CREDENTIALS_FILE)
     self._config = utils.load_json_dict(files.CONFIG_FILE)
Пример #7
0
 def stash_files(self):
     if files.check_file_permissions():
         self._credentials = utils.load_json_dict(files.CREDENTIALS_FILE)
         self._config = utils.load_json_dict(files.CONFIG_FILE)
Пример #8
0
 def stash_files(self):
     if files.check_file_permissions():
         self._credentials = utils.load_json_dict(files.CREDENTIALS_FILE)
         self._config = utils.load_json_dict(files.CONFIG_FILE)
Пример #9
0
 def stash_files(self):
     if files.check_file_permissions():
         self._credentials = utils.load_json_dict(files.CREDENTIALS_FILE)
         self._config = utils.load_json_dict(files.CONFIG_FILE)
         self._graph_reference = \
             utils.load_json_dict(files.GRAPH_REFERENCE_FILE)
Пример #10
0
 def stash_files(self):
     if files.check_file_permissions():
         self._credentials = utils.load_json_dict(files.CREDENTIALS_FILE)
         self._config = utils.load_json_dict(files.CONFIG_FILE)
         self._graph_reference = \
             utils.load_json_dict(files.GRAPH_REFERENCE_FILE)