PNG  IHDR* pHYs+ IDATx]n#; cdLb Ǚ[at¤_:uP}>!Usă cag޿ ֵNu`ݼTâabO7uL&y^wFٝA"l[|ŲHLN밪4*sG3|Dv}?+y߉{OuOAt4Jj.u]Gz*҉sP'VQKbA1u\`& Af;HWj hsO;ogTu uj7S3/QzUr&wS`M$X_L7r2;aE+ώ%vikDA:dR+%KzƉo>eOth$z%: :{WwaQ:wz%4foɹE[9<]#ERINƻv溂E%P1i01 |Jvҗ&{b?9g=^wζXn/lK::90KwrюO\!ջ3uzuGv^;騢wq<Iatv09:tt~hEG`v;3@MNZD.1]L:{ծI3`L(÷ba")Y.iljCɄae#I"1 `3*Bdz>j<fU40⨬%O$3cGt]j%Fߠ_twJ;ABU8vP3uEԑwQ V:h%))LfraqX-ۿX]v-\9I gl8tzX ]ecm)-cgʒ#Uw=Wlێn(0hPP/ӨtQ“&J35 $=]r1{tLuǮ*i0_;NƝ8;-vݏr8+U-kruȕYr0RnC]*ެ(M:]gE;{]tg(#ZJ9y>utRDRMdr9㪩̞zֹb<ģ&wzJM"iI( .ꮅX)Qw:9,i좜\Ԛi7&N0:asϓc];=ΗOӣ APqz93 y $)A*kVHZwBƺnWNaby>XMN*45~ղM6Nvm;A=jֲ.~1}(9`KJ/V F9[=`~[;sRuk]rєT!)iQO)Y$V ی ۤmzWz5IM Zb )ˆC`6 rRa}qNmUfDsWuˤV{ Pݝ'=Kֳbg,UҘVz2ﴻnjNgBb{? ߮tcsͻQuxVCIY۠:(V뺕 ٥2;t`@Fo{Z9`;]wMzU~%UA蛚dI vGq\r82iu +St`cR.6U/M9IENDB` REDROOM
PHP 5.6.40
Preview: persistor.py Size: 4.61 KB
//lib/python3.6/site-packages/dnf/persistor.py

# persistor.py
# Persistence data container.
#
# Copyright (C) 2013-2016 Red Hat, Inc.
#
# This copyrighted material is made available to anyone wishing to use,
# modify, copy, or redistribute it subject to the terms and conditions of
# the GNU General Public License v.2, or (at your option) any later version.
# This program is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY expressed or implied, including the implied warranties of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General
# Public License for more details.  You should have received a copy of the
# GNU General Public License along with this program; if not, write to the
# Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
# 02110-1301, USA.  Any Red Hat trademarks that are incorporated in the
# source code or documentation are not subject to the GNU General Public
# License and may only be used or replicated with the express permission of
# Red Hat, Inc.
#

# The current implementation is storing to files in persistdir. Do not depend on
# specific files existing, instead use the persistor API. The underlying
# implementation can change, e.g. for one general file with a serialized dict of
# data etc.

from __future__ import absolute_import
from __future__ import unicode_literals
from dnf.i18n import _
import distutils.version
import dnf.util
import errno
import fnmatch
import json
import logging
import os
import re

logger = logging.getLogger("dnf")


class JSONDB(object):

    def _check_json_db(self, json_path):
        if not os.path.isfile(json_path):
            # initialize new db
            dnf.util.ensure_dir(os.path.dirname(json_path))
            self._write_json_db(json_path, [])

    def _get_json_db(self, json_path, default=[]):
        with open(json_path, 'r') as f:
            content = f.read()
        if content == "":
            # empty file is invalid json format
            logger.warning(_("%s is empty file"), json_path)
            self._write_json_db(json_path, default)
        else:
            try:
                default = json.loads(content)
            except ValueError as e:
                logger.warning(e)
        return default

    @staticmethod
    def _write_json_db(json_path, content):
        with open(json_path, 'w') as f:
            json.dump(content, f)


class RepoPersistor(JSONDB):
    """Persistent data kept for repositories.

    Is arch/releasever specific and stores to cachedir.

    """

    def __init__(self, cachedir):
        self.cachedir = cachedir
        self.db_path = os.path.join(self.cachedir, "expired_repos.json")
        self.expired_to_add = set()
        self.reset_last_makecache = False

    @property
    def _last_makecache_path(self):
        return os.path.join(self.cachedir, "last_makecache")

    def get_expired_repos(self):
        try:
            self._check_json_db(self.db_path)
            return set(self._get_json_db(self.db_path))
        except OSError as e:
            logger.warning(_("Failed to load expired repos cache: %s"), e)
            return None

    def save(self):
        try:
            self._check_json_db(self.db_path)
            self._write_json_db(self.db_path, list(self.expired_to_add))
        except OSError as e:
            logger.warning(_("Failed to store expired repos cache: %s"), e)
            return False
        if self.reset_last_makecache:
            try:
                dnf.util.touch(self._last_makecache_path)
                return True
            except IOError:
                logger.warning(_("Failed storing last makecache time."))
                return False

    def since_last_makecache(self):
        try:
            return int(dnf.util.file_age(self._last_makecache_path))
        except OSError:
            logger.warning(_("Failed determining last makecache time."))
            return None


class TempfilePersistor(JSONDB):

    def __init__(self, cachedir):
        self.db_path = os.path.join(cachedir, "tempfiles.json")
        self.tempfiles_to_add = set()
        self._empty = False

    def get_saved_tempfiles(self):
        self._check_json_db(self.db_path)
        return self._get_json_db(self.db_path)

    def save(self):
        if not self._empty and not self.tempfiles_to_add:
            return
        self._check_json_db(self.db_path)
        if self._empty:
            self._write_json_db(self.db_path, [])
            return
        if self.tempfiles_to_add:
            data = set(self._get_json_db(self.db_path))
            data.update(self.tempfiles_to_add)
            self._write_json_db(self.db_path, list(data))

    def empty(self):
        self._empty = True

Directory Contents

Dirs: 7 × Files: 28

Name Size Perms Modified Actions
cli DIR
- drwxr-xr-x 2025-03-30 04:15:48
Edit Download
conf DIR
- drwxr-xr-x 2025-03-30 04:15:48
Edit Download
db DIR
- drwxr-xr-x 2025-03-30 04:15:48
Edit Download
module DIR
- drwxr-xr-x 2025-03-30 04:15:48
Edit Download
rpm DIR
- drwxr-xr-x 2025-03-30 04:15:48
Edit Download
yum DIR
- drwxr-xr-x 2025-03-30 04:15:48
Edit Download
- drwxr-xr-x 2025-03-30 04:15:48
Edit Download
114.74 KB lrw-r--r-- 2025-03-11 09:47:56
Edit Download
3.64 KB lrw-r--r-- 2021-04-12 15:26:33
Edit Download
24.24 KB lrw-r--r-- 2025-03-11 09:47:56
Edit Download
2.31 KB lrw-r--r-- 2025-03-11 09:47:56
Edit Download
5.98 KB lrw-r--r-- 2021-04-12 15:26:33
Edit Download
11.06 KB lrw-r--r-- 2021-04-12 15:26:33
Edit Download
6.20 KB lrw-r--r-- 2021-04-12 15:26:33
Edit Download
5.71 KB lrw-r--r-- 2021-04-12 15:26:33
Edit Download
1.08 KB lrw-r--r-- 2021-04-12 15:26:33
Edit Download
1.12 KB lrw-r--r-- 2021-04-12 15:26:33
Edit Download
12.03 KB lrw-r--r-- 2021-04-12 15:26:33
Edit Download
5.20 KB lrw-r--r-- 2021-04-12 15:26:33
Edit Download
10.11 KB lrw-r--r-- 2021-04-12 15:26:33
Edit Download
3.83 KB lrw-r--r-- 2021-04-12 15:26:33
Edit Download
10.94 KB lrw-r--r-- 2021-04-12 15:26:33
Edit Download
4.61 KB lrw-r--r-- 2021-04-12 15:26:33
Edit Download
9.33 KB lrw-r--r-- 2025-03-11 09:47:56
Edit Download
3.52 KB lrw-r--r-- 2021-04-12 15:26:33
Edit Download
1.55 KB lrw-r--r-- 2021-04-12 15:26:33
Edit Download
20.32 KB lrw-r--r-- 2025-03-11 09:47:56
Edit Download
5.04 KB lrw-r--r-- 2025-03-11 09:47:56
Edit Download
2.97 KB lrw-r--r-- 2021-04-12 15:26:33
Edit Download
1.10 KB lrw-r--r-- 2021-04-12 15:26:33
Edit Download
1.12 KB lrw-r--r-- 2021-04-12 15:26:33
Edit Download
4.29 KB lrw-r--r-- 2021-04-12 15:26:33
Edit Download
25.59 KB lrw-r--r-- 2025-03-11 09:47:56
Edit Download
19.90 KB lrw-r--r-- 2021-04-12 15:26:33
Edit Download
1.36 KB lrw-r--r-- 2021-04-12 15:26:33
Edit Download

If ZipArchive is unavailable, a .tar will be created (no compression).
© 2026 REDROOM — Secure File Manager. All rights reserved. Built with ❤️ & Red Dark UI