Esempio n. 1
0
    def __init__(self):
        IniFile.__init__(self, const.CONFIG_FILE)

        self.login_states = ('10', '20', '30', '40', '50', '60', '70')
        self.login_states_dict = {
            '10': 0,
            '20': 1,
            '30': 2,
            '40': 3,
            '50': 4,
            '60': 5,
            '70': 6
        }

        if not os.path.exists(const.CONFIG_FILE):
            self.set_value('login_auto_run', 'yes')
            self.set_value('login_password', '')
            self.set_value('login_status', '40')
            self.set_value('proxy_enable', 'no')
            self.set_value('proxy_uri', 'http://127.0.0.1:8000')
            self.set_value('hot_key', '<Alt>Q')
            self.set_value('save_path', utils.get_user_download_dir())

        self.login_auto_run = self.get_value('login_auto_run')
        self.login_password = self.get_value('login_password')
        self.login_status = self.get_value('login_status')
        self.proxy_enable = self.get_value('proxy_enable')
        self.proxy_uri = self.get_value('proxy_uri')
        self.hot_key = self.get_value('hot_key')
        self.save_path = self.get_value('save_path')
Esempio n. 2
0
def get_user_download_dir():
    user_dir_file = IniFile(os.path.join(os.path.expanduser("~"), ".config/user-dirs.dirs"))
    download_dir_val = user_dir_file.get_value("XDG_DOWNLOAD_DIR")
    prefix = download_dir_val.strip('"').split("/")[0]
    if prefix:
        return os.getenv("HOME") + "/" + "/".join(download_dir_val.strip('"').split("/")[1:])
    return download_dir_val.strip('"')
 def open(self, filename=None, xmlreport=None, minidump=None):
     if filename:
         try:
             self._ini = IniFile(filename, commentPrefix=';', keyValueSeperator='=', qt=True)
             self._filename = filename
         except IOError as e:
             raise SystemInfoReport.SystemInfoReportIOError(self, str(e))
     elif xmlreport is not None:
         self._xmlreport = xmlreport
         if xmlreport.fast_protect_system_info is None:
             raise SystemInfoReport.SystemInfoReportIOError(self, 'No system info include in XMLReport %s' % (xmlreport.filename))
         if sys.version_info[0] > 2:
             from io import StringIO
             stream = StringIO(xmlreport.fast_protect_system_info.rawdata.raw.decode('utf8'))
         else:
             from StringIO import StringIO
             stream = StringIO(xmlreport.fast_protect_system_info.rawdata.raw)
         self._ini = IniFile(filename=None, commentPrefix=';', keyValueSeperator='=', qt=True)
         self._ini.open(stream)
         self.platform_type = xmlreport.platform_type
         self.is_64_bit = xmlreport.is_64_bit
         #print('platform=%s' % (self.platform_type))
     elif minidump:
         raise SystemInfoReport.SystemInfoReportIOError(self, 'Not yet implemented')
     self._post_open()
Esempio n. 4
0
    def from_file(cls, filename):
        """Reads a project from a project file."""
        inifile = IniFile(filename)
        if inifile.is_new:
            return None

        name = (inifile.get("project.name")
                or os.path.basename(filename).rsplit(".")[0].title())
        path = os.path.join(
            os.path.dirname(filename),
            untrusted_to_os_path(inifile.get("project.path") or "."),
        )

        themes = inifile.get("project.themes")
        if themes is not None:
            themes = [x.strip() for x in themes.split(",")]
        else:
            themes = []

        return cls(
            name=name,
            project_file=filename,
            tree=path,
            themes=themes,
        )
Esempio n. 5
0
def get_user_download_dir():
    user_dir_file = IniFile(
        os.path.join(os.path.expanduser("~"), ".config/user-dirs.dirs"))
    download_dir_val = user_dir_file.get_value('XDG_DOWNLOAD_DIR')
    prefix = download_dir_val.strip('"').split("/")[0]
    if prefix:
        return os.getenv("HOME") + "/" + "/".join(
            download_dir_val.strip('"').split("/")[1:])
    return download_dir_val.strip('"')
Esempio n. 6
0
	def __init__(self):
		IniFile.__init__(self, const.CONFIG_FILE)
		
		self.login_states = ('10', '20', '30', '40', '50', '60', '70')
		self.login_states_dict = {'10': 0, '20': 1, '30': 2, '40': 3, '50': 4, '60': 5, '70': 6}
		
		self.login_auto_run = self.get_value('login_auto_run')
		self.login_password = self.get_value('login_password')
		self.login_status = self.get_value('login_status')
		self.proxy_enable = self.get_value('proxy_enable')
		self.proxy_uri = self.get_value('proxy_uri')
		self.hot_key = self.get_value('hot_key')
		self.save_path = self.get_value('save_path')
Esempio n. 7
0
def project_from_file(filename):
    inifile = IniFile(filename)
    if inifile.is_new:
        return None

    name = inifile.get('project.name') or os.path.basename(
        filename).rsplit('.')[0].title()
    path = os.path.join(os.path.dirname(filename),
                        to_os_path(inifile.get('project.path') or '.'))
    return Project(
        name=name,
        project_file=filename,
        tree=path,
    )
Esempio n. 8
0
    def from_file(cls, filename):
        """Reads a project from a project file."""
        inifile = IniFile(filename)
        if inifile.is_new:
            return None

        name = inifile.get('project.name') or os.path.basename(
            filename).rsplit('.')[0].title()
        path = os.path.join(os.path.dirname(filename),
                            to_os_path(inifile.get('project.path') or '.'))
        return cls(
            name=name,
            project_file=filename,
            tree=path,
        )
Esempio n. 9
0
    def __init__(self, filename=None):
        self.filename = filename
        self.values = copy.deepcopy(DEFAULT_CONFIG)

        if filename is not None and os.path.isfile(filename):
            inifile = IniFile(filename)
            update_config_from_ini(self.values, inifile)
Esempio n. 10
0
def test_new_theme(project_cli_runner):
    result = project_cli_runner.invoke(
        cli,
        ["dev", "new-theme"],
        input="Lektor Theme Name\n" "\n" "Author Name\n" "[email protected]\n" "y\n",
    )
    assert "Create Theme?" in result.output
    assert result.exit_code == 0
    path = os.path.join("themes", "lektor-theme-name")
    assert set(os.listdir(path)) == set(
        ["example-site", "images", "README.md", "theme.ini"]
    )
    assert set(os.listdir(os.path.join(path, "images"))) == set(["homepage.png"])
    assert set(os.listdir(os.path.join(path, "example-site"))) == set(
        ["lektor-theme-name.lektorproject", "README.md", "themes"]
    )
    try:
        assert (
            os.readlink(os.path.join(path, "example-site/themes/lektor-theme-name"))
            == "../../../lektor-theme-name"
        )
    except AttributeError:
        pass

    theme_inifile = IniFile(os.path.join(path, "theme.ini"))
    assert theme_inifile["theme.name"] == "Lektor Theme Name"
    assert theme_inifile["author.email"] == "*****@*****.**"
    assert theme_inifile["author.name"] == "Author Name"

    with open(os.path.join(path, "README.md")) as f:
        readme_contents = f.read().strip()
    assert "Lektor Theme Name" in readme_contents
Esempio n. 11
0
def test_new_theme_name_only(project_cli_runner, can_symlink, default_author,
                             default_author_email):
    result = project_cli_runner.invoke(
        cli,
        ["dev", "new-theme"],
        input="Lektor Name Theme\n"
        "\n"
        "\n"
        "\n"
        "y\n",
    )
    assert "Create Theme?" in result.output
    assert result.exit_code == 0
    path = os.path.join("themes", "lektor-theme-name")
    assert set(os.listdir(path)) == set(
        ["example-site", "images", "README.md", "theme.ini"])
    assert set(os.listdir(os.path.join(path,
                                       "images"))) == set(["homepage.png"])
    assert set(os.listdir(os.path.join(path, "example-site"))) == set(
        ["lektor-theme-name.lektorproject", "README.md", "themes"])
    if can_symlink:
        assert (os.readlink(
            os.path.join(path, "example-site/themes/lektor-theme-name")) ==
                "../../../lektor-theme-name")

    theme_inifile = IniFile(os.path.join(path, "theme.ini"))
    assert theme_inifile["theme.name"] == "Lektor Name Theme"
    assert theme_inifile["author.email"] == default_author_email
    assert theme_inifile["author.name"] == default_author

    with open(os.path.join(path, "README.md"), encoding="utf-8") as f:
        readme_contents = f.read().strip()
    assert "Lektor Name Theme" in readme_contents
Esempio n. 12
0
    def get_og_items(self, record):
        plugin_config = self.get_config()
        model_config = IniFile(record.datamodel.filename)
        root = get_ctx().pad.root
        items = {
            'site_name':
            plugin_config.get('global.site_name', self.env.project.name),
            'url':
            url_to(record, external=True),
            'title':
            get_og_title(record, model_config, root),
            'type':
            'website',
        }
        image = get_og_image(record, root)

        if image is not None:
            items.update({
                'image': url_to(image, external=True),
                'image:width': image.width,
                'image:height': image.height,
                'image:type': 'image/' + image.format,
            })

            if image.parent is root:
                items['image:alt'] = 'logo'

        return items
def test_new_theme_name_only(project_cli_runner):
    result = project_cli_runner.invoke(
        cli,
        ["dev", "new-theme"],
        input='Lektor Name Theme\n'
        '\n'
        '\n'
        '\n'
        'y\n',
    )
    assert "Create Theme?" in result.output
    assert result.exit_code == 0
    path = os.path.join('themes', 'lektor-theme-name')
    assert set(os.listdir(path)) == set(
        ['example-site', 'images', 'README.md', 'theme.ini'])
    assert set(os.listdir(os.path.join(path,
                                       'images'))) == set(['homepage.png'])
    assert set(os.listdir(os.path.join(path, 'example-site'))) == set(
        ['lektor-theme-name.lektorproject', 'README.md', 'themes'])
    try:
        assert os.readlink(os.path.join(
            path, 'example-site/themes/lektor-theme-name')) == \
            '../../../lektor-theme-name'
    except AttributeError:
        pass

    theme_inifile = IniFile(os.path.join(path, 'theme.ini'))
    assert theme_inifile['theme.name'] == 'Lektor Name Theme'
    assert theme_inifile['author.email'] == get_default_author_email()
    assert theme_inifile['author.name'] == get_default_author()

    with open(os.path.join(path, 'README.md')) as f:
        readme_contents = f.read().strip()
    assert "Lektor Name Theme" in readme_contents
Esempio n. 14
0
 def get_config(self, fresh=False):
     """Returns the config specific for this plugin.  By default this
     will be cached for the current build context but this can be
     disabled by passing ``fresh=True``.
     """
     ctx = get_ctx()
     if ctx is not None and not fresh:
         cache = ctx.cache.setdefault(__name__ + ':configs', {})
         cfg = cache.get(self.id)
         if cfg is None:
             cfg = IniFile(self.config_filename)
             cache[self.id] = cfg
     else:
         cfg = IniFile(self.config_filename)
     if ctx is not None:
         ctx.record_dependency(self.config_filename)
     return cfg
Esempio n. 15
0
def inifile(site_path, junk_ini, my_plugin_id,
            pagination_enabled, month_index_enabled):
    # Make a temporary copy of our .ini file
    config_name = '%s.ini' % my_plugin_id
    orig_ini = site_path / 'configs' / config_name
    inifile = IniFile(str(orig_ini))
    inifile.filename = str(junk_ini)

    def yesno(val):
        return 'yes' if val else 'no'

    inifile['pagination.enabled'] = yesno(pagination_enabled)
    if not month_index_enabled:
        del inifile['year-index.subindex']

    if not isinstance(pagination_enabled, bool):
        inifile['pagination.per_page'] = pagination_enabled
    return inifile
Esempio n. 16
0
def load_databag(filename):
    try:
        if filename.endswith('.json'):
            with open(filename, 'r') as f:
                return json.load(f, object_pairs_hook=OrderedDict)
        elif filename.endswith('.ini'):
            return decode_flat_data(IniFile(filename).items(),
                                    dict_cls=OrderedDict)
    except (OSError, IOError) as e:
        if e.errno != errno.ENOENT:
            raise
Esempio n. 17
0
	def __init__(self):
		IniFile.__init__(self, const.CONFIG_FILE)
		
		self.login_states = ('10', '20', '30', '40', '50', '60', '70')
		self.login_states_dict = {'10': 0, '20': 1, '30': 2, '40': 3, '50': 4, '60': 5, '70': 6}
		
		if not os.path.exists(const.CONFIG_FILE):
			self.set_value('login_auto_run', 'yes')
			self.set_value('login_password', '')
			self.set_value('login_status', '40')
			self.set_value('proxy_enable', 'no')
			self.set_value('proxy_uri', 'http://127.0.0.1:8000')
			self.set_value('hot_key', '<Alt>Q')
			self.set_value('save_path', utils.get_user_download_dir())

		self.login_auto_run = self.get_value('login_auto_run')
		self.login_password = self.get_value('login_password')
		self.login_status = self.get_value('login_status')
		self.proxy_enable = self.get_value('proxy_enable')
		self.proxy_uri = self.get_value('proxy_uri')
		self.hot_key = self.get_value('hot_key')
		self.save_path = self.get_value('save_path')
Esempio n. 18
0
def iter_inis(path):
    try:
        for filename in os.listdir(path):
            if not filename.endswith('.ini') or filename[:1] in '_.':
                continue
            fn = os.path.join(path, filename)
            if os.path.isfile(fn):
                base = filename[:-4].decode('ascii', 'replace')
                inifile = IniFile(fn)
                yield base, inifile
    except OSError as e:
        if e.errno != errno.ENOENT:
            raise
Esempio n. 19
0
def load_databag(filename):
    try:
        if filename.endswith(".json"):
            with open(filename, "r", encoding="utf-8") as f:
                return json.load(f, object_pairs_hook=OrderedDict)
        elif filename.endswith(".ini"):
            return decode_flat_data(IniFile(filename).items(),
                                    dict_cls=OrderedDict)
        else:
            return None
    except (OSError, IOError) as e:
        if e.errno != errno.ENOENT:
            raise
        return None
Esempio n. 20
0
def iter_inis(path):
    try:
        for filename in os.listdir(path):
            if not filename.endswith(".ini") or filename[:1] in "_.":
                continue
            fn = os.path.join(path, filename)
            if os.path.isfile(fn):
                base = filename[:-4]
                base = base.encode("utf-8").decode("ascii", "replace")
                inifile = IniFile(fn)
                yield base, inifile
    except OSError as e:
        if e.errno != errno.ENOENT:
            raise
Esempio n. 21
0
    def from_file(cls, filename):
        """Reads a project from a project file."""
        inifile = IniFile(filename)
        if inifile.is_new:
            return None

        name = inifile.get('project.name') or os.path.basename(
            filename).rsplit('.')[0].title()
        path = os.path.join(os.path.dirname(filename),
                            untrusted_to_os_path(
                                inifile.get('project.path') or '.'))

        themes = inifile.get('project.themes')
        if themes is not None:
            themes = [x.strip() for x in themes.split(',')]
        else:
            themes = []

        return cls(
            name=name,
            project_file=filename,
            tree=path,
            themes=themes,
        )
 def inifile(self, test_ini):
     inifile = IniFile(str(test_ini))
     inifile.filename = '/dev/null'
     return inifile
Esempio n. 23
0
def num_unequal(filename, cmpFcn):
    """
    Check whether two files are numerically unequal for the given compare function.
    :param filename: The base name of the files to check.
    :param cmpFcn: The default comparison function. Can be overriden by the filetolmatrix.
    :return: True, when the files do not match, false else.
    """
    orig_name = os.path.join(args.ini_dir, args.diff_to, filename)
    with open(orig_name) as f:
        origMat = [[x for x in ln.split()] for ln in f]
        # Check if the first row has one more column, which is the #
        if len(origMat[0]) == len(origMat[1]) + 1:
            origBase = 1
            origMat[0] = origMat[0][1:]
        else:
            origBase = 0
    new_name = os.path.join(args.ini_dir, args.out_files_dir, filename)
    with open(new_name) as f:
        newMat = [[x for x in ln.split()] for ln in f]
        if len(newMat[0]) == len(newMat[1]) + 1:
            newBase = 1
            newMat[0] = newMat[0][1:]
        else:
            newBase = 0
    if len(origMat) - origBase != len(newMat) - newBase:
        if args.verbose_diff_output:
            printlog('num rows do not match in %s: %d != %d' % (filename, len(origMat), len(newMat)))
        return True
    if newBase == 1:
        cols = [s[0] + 'x' + s[1] if len(s) == 2 and s != 'nu' else s for s in newMat[0]]
    else:
        cols = range(len(newMat[0]))

    tolerances = get_tolerance_vector(filename, cols)
    row = 0
    col = 0
    try:
        if tolerances:
            inifilenameparts = filename.rsplit('_', 2)
            inifilename = '_'.join(inifilenameparts[0:2]) if inifilenameparts[1] != 'transfer' else inifilenameparts[0]
            inifilename += "_params.ini"
            inifilename = os.path.join(args.ini_dir, args.out_files_dir, inifilename)
            if not os.path.exists(inifilename):
                if 'sharp_cl_params' in inifilename:
                    inifile = IniFile()
                else:
                    printlog("ini filename does not exist: %s" % inifilename)
            else:
                try:
                    # The following split fails for *_transfer_out.* files where it not needed anyway.
                    inifile = IniFile()
                    inifile.readFile(inifilename)
                except:
                    printlog("Could not open ini filename: %s" % inifilename)
            for o_row, n_row in zip(origMat[origBase:], newMat[newBase:]):
                row += 1
                if len(o_row) != len(n_row):
                    if args.verbose_diff_output:
                        printlog('num columns do not match in %s: %d != %d' % (filename, len(o_row), len(n_row)))
                    return True
                col = 0
                of_row = [float(f) for f in o_row]
                nf_row = []
                for f in n_row:
                    try:
                        nf_row += [float(f)]
                    except ValueError:
                        sp = customsplit(f)
                        nf_row += [float(sp[0] + 'E' + sp[1])]
                oldrowdict = False
                newrowdict = False
                for o, n in zip(of_row, nf_row):
                    if isinstance(tolerances[col], Ignore):
                        pass
                    else:
                        cond, tols = tolerances[col]
                        # When the column condition is bool (True or False) or a function
                        # returning False, then skip this column.
                        if isinstance(cond, bool) or not cond(inifile):
                            pass
                        else:
                            if isinstance(tols, float):
                                if not cmpFcn(o, n, tols):
                                    if args.verbose_diff_output:
                                        printlog('value mismatch at %d, %d ("%s") of %s: %s != %s' % (
                                            row, col + 1, cols[col], filename, o, n))
                                    return True
                            elif not isinstance(tols, Ignore):
                                if not oldrowdict:
                                    oldrowdict = dict(zip(cols, of_row))
                                    newrowdict = dict(zip(cols, nf_row))
                                if isinstance(tols, list):
                                    cand = False
                                    for lim, rhs in tols:
                                        if lim < newrowdict["L"]:
                                            cand = rhs
                                        else:
                                            break
                                    if isinstance(cand, float):
                                        if not cmpFcn(o, n, cand):
                                            if args.verbose_diff_output:
                                                printlog('value mismatch at %d, %d ("%s") of %s: %s != %s' % (
                                                    row, col + 1, cols[col], filename, o, n))
                                            return True
                                    elif not isinstance(cand, Ignore):
                                        if not cand(oldrowdict, newrowdict):
                                            if args.verbose_diff_output:
                                                printlog('value mismatch at %d, %d ("%s") of %s: %s != %s' % (
                                                    row, col + 1, cols[col], filename, o, n))
                                            return True
                                else:
                                    if not tols(oldrowdict, newrowdict):
                                        if args.verbose_diff_output:
                                            printlog('value mismatch at %d, %d ("%s") of %s: %s != %s' % (
                                                row, col + 1, cols[col], filename, o, n))
                                        return True
                    col += 1
            return False
        else:
            #            if args.verbose_diff_output:
            #                printlog("Skipped file %s" % (filename))
            return False
    except ValueError as e:
        printlog("ValueError: '%s' at %d, %d in file: %s" % (e.message, row, col + 1, filename))
        return True
Esempio n. 24
0
    def __init__(self, rawdata):

        import StringIO
        stream = StringIO.StringIO(rawdata)
        ini = IniFile(filename=None, commentPrefix=';', keyValueSeperator='=', qt=True)
        ini.open(stream)

        self.product_name = ini.get(None, 'productName')
        self.product_code_name = ini.get(None, 'productCodename')
        self.product_version = ini.get(None, 'productVersion')
        self.product_target_version = ini.get(None, 'productTargetVersion')
        self.product_build_type = ini.get(None, 'productBuildType')
        self.product_build_postfix = ini.get(None, 'productBuildPostfix')
        self.root_revision = ini.get(None, 'sourceRootRevision')
        self.buildtools_revision = ini.get(None, 'sourceBuildtoolsRevision')
        self.external_revision = ini.get(None, 'sourceExternalRevision')
        self.third_party_revision = ini.get(None, 'source3rdPartyRevision')
        self.terra3d_revision = ini.get(None, 'sourceTerra3DRevision')
        self.manual_revision = ini.get(None, 'sourceManualRevision')
        self.jenkins_job_name = ini.get(None, 'jenkinsJobName')
        self.jenkins_build_number = ini.getAsInteger(None, 'jenkinsJobBuildNumber')
        self.jenkins_build_id = ini.get(None, 'jenkinsJobBuildId')
        self.jenkins_build_tag = ini.get(None, 'jenkinsJobBuildTag')
        self.jenkins_build_url = ini.get(None, 'jenkinsJobBuildUrl')
        self.jenkins_git_revision = ini.get(None, 'jenkinsJobBuildGitRevision')
        self.jenkins_git_branch = ini.get(None, 'jenkinsJobBuildGitBranch')
        self.jenkins_master = ini.get(None, 'jenkinsMaster')
        self.jenkins_nodename = ini.get(None, 'jenkinsNodename')
        self.threadname_tlsslot = ini.getAsInteger(None, 'threadNameTLSSlot')
class SystemInfoReport(object):
    _plain_arrays = ['OpenGLExtensions/Extension']
    _tuples = {
        'System/Path' : ['Dir', 'Ok'],
        'Process/Module': ['Path', 'BaseAddress', 'Size', 'EntryPoint', 'FileVersion', 'ProductVersion', 'Timestamp', 'TimestampUtc'],
        'Windows/hotfix': ['id'],
        'Network/Interface': ['index', 'name', 'description', 'hwaddr', 'loopback', 'up', 'running', 'wireless', 'pointtopoint', 'multicast', 'broadcast', 'addr'],

        'terra3d-dirs': _Terra3DDirectories,
        'CPU': _SystemInfoCPU,
        'locale': _SystemInfoLocale,
        'Network': _SystemInfoNetwork,
        }
    _dicts = ['Environment']

    class SystemInfoReportException(Exception):
        def __init__(self, report, message):
            super(SystemInfoReport.SystemInfoReportException, self).__init__(message)
            self._message = message
            self.report = report

        def __str__(self):
            return '%s(%s): %s' % (type(self).__name__, self.report._filename, self._message)


    class SystemInfoReportIOError(SystemInfoReportException):
        def __init__(self, report, message):
            super(SystemInfoReport.SystemInfoReportIOError, self).__init__(report, message)

    class SystemInfoReportParserError(SystemInfoReportException):
        def __init__(self, report, message):
            super(SystemInfoReport.SystemInfoReportParserError, self).__init__(report, message)

    def __init__(self, filename=None, xmlreport=None):
        self._filename = None
        self._xmlreport = None
        self._ini = None
        self.platform_type = None
        self.is_64_bit = True

        if filename is not None:
            self.open(filename=filename)
        elif xmlreport is not None:
            self.open(xmlreport=xmlreport)

    def clear(self):
        self._filename = None
        self._ini = None

    def _get_as_plain_array(self, section, key, default_value):
        ret = []
        got_value = False
        num = 0
        while 1:
            value = self._ini.get(section, key + '%i' % num, None)
            if value is None:
                break
            got_value = True
            ret.append(value)
            num = num + 1
        if got_value:
            return ret
        else:
            return default_value

    def _get_tuples(self, section, key_path, names, default_value=None):
        if isinstance(names, type):
            ini_section = self._ini.section(section)
            if ini_section is not None:
                ret = names(self, ini_section, key_path, default_value)
            else:
                ret = default_value
        else:
            size = self._ini.getAsInteger(section, key_path + '\\size', None)
            if size is None:
                return default_value
            else:
                ret = []
                for i in range(1, size):
                    elem = {}
                    for n in names:
                        elem[n] = self._ini.get(section, key_path + '\\%i\\%s' % (i, n), None)
                    ret.append(elem)
        return ret

    def _get_dicts(self, section, key_path, names, default_value=None):
        ret = default_value
        if not key_path:
            ini_section = self._ini.section(section)
            if ini_section:
                ret = ini_section.get_all_as_dict()
        return ret

    def get(self, key, default_value=None):
        if self._ini is None:
            return default_value
        if '/' in key:
            section, key_path = key.split('/', 1)
            key_path = key_path.replace('/', '\\')
        else:
            section = key
            key_path = None
        if key in SystemInfoReport._plain_arrays:
            return self._get_as_plain_array(section, key_path, default_value)
        elif key in SystemInfoReport._tuples:
            return self._get_tuples(section, key_path, SystemInfoReport._tuples[key], default_value)
        elif key in SystemInfoReport._dicts:
            return self._get_dicts(section, key_path, default_value)
        elif isinstance(default_value, list):
            return self._ini.getAsArray(section, key_path, default_value)
        else:
            return self._ini.get(section, key_path, default_value)

    def __getitem__(self, name):
        return self.get(name)

    def _post_open(self):
        if self.platform_type is None:
            pass

    @property
    def is_platform_windows(self):
        return self.platform_type == 'Win32' or self.platform_type == 'Windows NT'

    def open(self, filename=None, xmlreport=None, minidump=None):
        if filename:
            try:
                self._ini = IniFile(filename, commentPrefix=';', keyValueSeperator='=', qt=True)
                self._filename = filename
            except IOError as e:
                raise SystemInfoReport.SystemInfoReportIOError(self, str(e))
        elif xmlreport is not None:
            self._xmlreport = xmlreport
            if xmlreport.fast_protect_system_info is None:
                raise SystemInfoReport.SystemInfoReportIOError(self, 'No system info include in XMLReport %s' % (xmlreport.filename))
            if sys.version_info[0] > 2:
                from io import StringIO
                stream = StringIO(xmlreport.fast_protect_system_info.rawdata.raw.decode('utf8'))
            else:
                from StringIO import StringIO
                stream = StringIO(xmlreport.fast_protect_system_info.rawdata.raw)
            self._ini = IniFile(filename=None, commentPrefix=';', keyValueSeperator='=', qt=True)
            self._ini.open(stream)
            self.platform_type = xmlreport.platform_type
            self.is_64_bit = xmlreport.is_64_bit
            #print('platform=%s' % (self.platform_type))
        elif minidump:
            raise SystemInfoReport.SystemInfoReportIOError(self, 'Not yet implemented')
        self._post_open()

    def save(self, filename):
        self._ini.save(filename)
 def inifile(self, config, tmp_path):
     ini = IniFile(str(tmp_path / 'test.ini'))
     for key, value in config.items():
         ini['default.' + key] = value
     ini.save()
     return ini
#!/usr/bin/env python
from inifile import IniFile
from pygments.formatters import HtmlFormatter

ifile = IniFile("../../configs/highlighter.ini")
style = ifile.get('pygments.style', 'default')
fmt = HtmlFormatter(style=style)
with open("pygments.css", "w") as f:
    f.write(fmt.get_style_defs())
Esempio n. 28
0
 def open_config(self):
     if self.project_file is None:
         raise RuntimeError('This project has no project file.')
     return IniFile(self.project_file)
Esempio n. 29
0
from inifile import IniFile

i = IniFile('hello.ini')
i['foo.bar'] = 'testing more stuff'
i['foo.mup'] = 'aha!'
print i.get_updated_lines()
i.save()
Esempio n. 30
0
def num_unequal(filename, cmpFcn):
    """
    Check whether two files are numerically unequal for the given compare function.
    :param filename: The base name of the files to check.
    :param cmpFcn: The default comparison function. Can be overriden by the filetolmatrix.
    :return: True, when the files do not match, false else.
    """
    orig_name = os.path.join(args.ini_dir, args.diff_to, filename)
    with open(orig_name) as f:
        origMat = [[x for x in ln.split()] for ln in f]
        # Check if the first row has one more column, which is the #
        if len(origMat[0]) == len(origMat[1]) + 1:
            origBase = 1
            origMat[0] = origMat[0][1:]
        else:
            origBase = 0
    new_name = os.path.join(args.ini_dir, args.out_files_dir, filename)
    with open(new_name) as f:
        newMat = [[x for x in ln.split()] for ln in f]
        if len(newMat[0]) == len(newMat[1]) + 1:
            newBase = 1
            newMat[0] = newMat[0][1:]
        else:
            newBase = 0
    if len(origMat) - origBase != len(newMat) - newBase:
        if args.verbose_diff_output:
            printlog('num rows do not match in %s: %d != %d' %
                     (filename, len(origMat), len(newMat)))
        return True
    if newBase == 1:
        cols = [
            s[0] + 'x' + s[1] if len(s) == 2 and s != 'nu' else s
            for s in newMat[0]
        ]
    else:
        cols = range(len(newMat[0]))

    tolerances = get_tolerance_vector(filename, cols)
    row = 0
    col = 0
    try:
        if tolerances:
            inifilenameparts = filename.rsplit('_', 2)
            inifilename = '_'.join(
                inifilenameparts[0:2]
            ) if inifilenameparts[1] != 'transfer' else inifilenameparts[0]
            inifilename += "_params.ini"
            inifilename = os.path.join(args.ini_dir, args.out_files_dir,
                                       inifilename)
            if not os.path.exists(inifilename):
                if 'sharp_cl_params' in inifilename:
                    inifile = IniFile()
                else:
                    printlog("ini filename does not exist: %s" % inifilename)
            else:
                try:
                    # The following split fails for *_transfer_out.* files where it not needed anyway.
                    inifile = IniFile()
                    inifile.readFile(inifilename)
                except OSError:
                    printlog("Could not open ini filename: %s" % inifilename)
            for o_row, n_row in zip(origMat[origBase:], newMat[newBase:]):
                row += 1
                if len(o_row) != len(n_row):
                    if args.verbose_diff_output:
                        printlog('num columns do not match in %s: %d != %d' %
                                 (filename, len(o_row), len(n_row)))
                    return True
                col = 0
                of_row = [float(f) for f in o_row]
                nf_row = []
                for f in n_row:
                    try:
                        nf_row += [float(f)]
                    except ValueError:
                        sp = customsplit(f)
                        nf_row += [float(sp[0] + 'E' + sp[1])]
                oldrowdict = False
                newrowdict = False
                for o, n in zip(of_row, nf_row):
                    if isinstance(tolerances[col], Ignore):
                        pass
                    else:
                        cond, tols = tolerances[col]
                        # When the column condition is bool (True or False) or a function
                        # returning False, then skip this column.
                        if isinstance(cond, bool) or not cond(inifile):
                            pass
                        else:
                            if isinstance(tols, float):
                                if not cmpFcn(o, n, tols):
                                    if args.verbose_diff_output:
                                        printlog(
                                            'value mismatch at %d, %d ("%s") of %s: %s != %s'
                                            % (row, col + 1, cols[col],
                                               filename, o, n))
                                    return True
                            elif not isinstance(tols, Ignore):
                                if not oldrowdict:
                                    oldrowdict = dict(zip(cols, of_row))
                                    newrowdict = dict(zip(cols, nf_row))
                                if isinstance(tols, list):
                                    cand = False
                                    for lim, rhs in tols:
                                        if lim < newrowdict["L"]:
                                            cand = rhs
                                        else:
                                            break
                                    if isinstance(cand, float):
                                        if not cmpFcn(o, n, cand):
                                            if args.verbose_diff_output:
                                                printlog(
                                                    'value mismatch at %d, %d ("%s") of %s: %s != %s'
                                                    % (row, col + 1, cols[col],
                                                       filename, o, n))
                                            return True
                                    elif not isinstance(cand, Ignore):
                                        if not cand(oldrowdict, newrowdict):
                                            if args.verbose_diff_output:
                                                printlog(
                                                    'value mismatch at %d, %d ("%s") of %s: %s != %s'
                                                    % (row, col + 1, cols[col],
                                                       filename, o, n))
                                            return True
                                else:
                                    if not tols(oldrowdict, newrowdict):
                                        if args.verbose_diff_output:
                                            printlog(
                                                'value mismatch at %d, %d ("%s") of %s: %s != %s'
                                                % (row, col + 1, cols[col],
                                                   filename, o, n))
                                        return True
                    col += 1
            return False
        else:
            #            if args.verbose_diff_output:
            #                printlog("Skipped file %s" % (filename))
            return False
    except ValueError as e:
        printlog("ValueError: '%s' at %d, %d in file: %s" %
                 (e.message, row, col + 1, filename))
        return True