[entropy.cli] drop module, move code to client/ and server/

Even though it is a small code duplication, entropy.cli does make
much less sense.
This commit is contained in:
Fabio Erculiani
2012-11-04 21:11:56 +01:00
parent 7bd7606331
commit 280a7067b3
12 changed files with 153 additions and 427 deletions
+4 -3
View File
@@ -643,7 +643,8 @@ def _revgraph_package(entropy_client, installed_pkg_id, package, dbconn,
# ensure package availability in graph, initialize now
graph.add(inst_item, set())
rev_pkgs_sorter = lambda x: dbconn.retrieveAtom(x)
def rev_pkgs_sorter(_pkg_id):
return dbconn.retrieveAtom(_pkg_id)
while stack.is_filled():
@@ -651,7 +652,7 @@ def _revgraph_package(entropy_client, installed_pkg_id, package, dbconn,
if item in stack_cache:
continue
stack_cache.add(item)
pkg_id, was_dep = item
pkg_id, _was_dep = item
rev_deps = dbconn.retrieveReverseDependencies(pkg_id,
exclude_deptypes = excluded_dep_types)
@@ -736,7 +737,7 @@ def _graph_package(match, package, entropy_intf, show_complete = False,
if item in stack_cache:
continue
stack_cache.add(item)
((pkg_id, repo_id,), was_dep, dep_type) = item
((pkg_id, repo_id,), _was_dep, dep_type) = item
# deps
repodb = entropy_intf.open_repository(repo_id)
+2 -3
View File
@@ -3,9 +3,8 @@ Backlog (raw)
1.0:
- solo branch:
move etpConst['install_sources'] to entropy.db
drop entropy.cli (it is used by other stuff, what to do?)
drop etpUi
drop etpUi (anaconda uses etpUi['mute'])
fixup etpUi usage in lib/ !
- preserved-libs registry:
only drop old sonames when installed packages
+34 -2
View File
@@ -70,13 +70,12 @@ from entropy.i18n import _
from entropy.misc import LogFile, ParallelTask, TimeScheduled, \
ReadersWritersSemaphore
from entropy.fetchers import UrlFetcher, MultipleUrlFetcher
from entropy.output import TextInterface, purple
from entropy.output import TextInterface, purple, teal
from entropy.client.interfaces import Client
from entropy.client.interfaces.package import Package
from entropy.client.interfaces.repository import Repository
from entropy.services.client import WebService
from entropy.core.settings.base import SystemSettings
from entropy.cli import get_entropy_webservice
import entropy.tools
import entropy.dep
@@ -96,6 +95,39 @@ if DAEMON_LOGGING:
sys.stderr = DAEMON_LOG
sys.stdout = DAEMON_LOG
def get_entropy_webservice(entropy_client, repository_id, tx_cb = False):
"""
Get Entropy Web Services service object (ClientWebService).
@param entropy_client: Entropy Client interface
@type entropy_client: entropy.client.interfaces.Client
@param repository_id: repository identifier
@type repository_id: string
@return: the ClientWebService instance
@rtype: entropy.client.services.interfaces.ClientWebService
@raise WebService.UnsupportedService: if service is unsupported by
repository
"""
def _transfer_callback(transfered, total, download):
if download:
action = _("Downloading")
else:
action = _("Uploading")
percent = 100
if (total > 0) and (transfered <= total):
percent = int(round((float(transfered)/total) * 100, 1))
msg = "[%s%s] %s ..." % (purple(str(percent)), "%", teal(action))
entropy_client.output(msg, back=True)
factory = entropy_client.WebServices()
webserv = factory.new(repository_id)
if tx_cb:
webserv._set_transfer_callback(_transfer_callback)
return webserv
def write_output(message, debug=False):
message = time.strftime('[%H:%M:%S %d/%m/%Y %Z]') + " " + message
if DAEMON_LOGGING:
+1 -2
View File
@@ -13,11 +13,10 @@ import sys
import argparse
from entropy.i18n import _
from entropy.cli import graph_packages
from eit.commands.descriptor import EitCommandDescriptor
from eit.commands.command import EitCommand
from eit.utils import graph_packages
class EitGraph(EitCommand):
"""
+1 -1
View File
@@ -14,10 +14,10 @@ import argparse
from entropy.i18n import _
from entropy.output import purple
from entropy.cli import print_package_info
from eit.commands.descriptor import EitCommandDescriptor
from eit.commands.command import EitCommand
from eit.utils import print_package_info
class EitMatch(EitCommand):
+1 -1
View File
@@ -15,10 +15,10 @@ import argparse
from entropy.i18n import _
from entropy.output import purple, darkgreen, teal, bold
from entropy.cli import print_package_info
from eit.commands.descriptor import EitCommandDescriptor
from eit.commands.command import EitCommand
from eit.utils import print_package_info
class EitOwn(EitCommand):
+1 -2
View File
@@ -14,12 +14,11 @@ import argparse
from entropy.output import purple, darkgreen, bold, brown, teal
from entropy.const import etpConst
from entropy.cli import print_package_info
from entropy.i18n import _
from eit.commands.descriptor import EitCommandDescriptor
from eit.commands.command import EitCommand
from eit.utils import print_package_info
class EitQuery(EitCommand):
"""
+1 -1
View File
@@ -13,10 +13,10 @@ import sys
import argparse
from entropy.i18n import _
from entropy.cli import revgraph_packages
from eit.commands.descriptor import EitCommandDescriptor
from eit.commands.command import EitCommand
from eit.utils import revgraph_packages
class EitRevgraph(EitCommand):
+1 -1
View File
@@ -14,10 +14,10 @@ import argparse
from entropy.i18n import _
from entropy.output import purple
from entropy.cli import print_package_info
from eit.commands.descriptor import EitCommandDescriptor
from eit.commands.command import EitCommand
from eit.utils import print_package_info
class EitSearch(EitCommand):
+2 -3
View File
@@ -18,10 +18,9 @@ from entropy.i18n import _
from entropy.output import darkgreen, teal, brown, darkred, \
bold, purple, blue
from entropy.cli import print_table
from eit.commands.descriptor import EitCommandDescriptor
from eit.commands.command import EitCommand
from eit.utils import print_table
class EitStatus(EitCommand):
@@ -153,7 +152,7 @@ Show repository status (such as: *configured mirrors*,
toc.append((" %s:" % (darkgreen(_("unstaged packages")),),
str(unstaged_len),))
print_table(toc)
print_table(entropy_server, toc)
del toc[:]
entropy_server.output("")
+104 -407
View File
@@ -6,387 +6,41 @@
@copyright: Fabio Erculiani
@license: GPL-2
B{Entropy misc command line interface (CLI) module}.
In this module are enclosed all the miscellaneous functions
used by Command Line based applications.
B{Entropy Infrastructure Toolkit}.
"""
import sys
import os
import time
import subprocess
import codecs
from entropy.const import etpConst, const_convert_to_unicode
from entropy.output import print_info, print_generic, writechar, blue, \
red, bold, darkred, brown, darkblue, purple, teal, darkgreen, \
decolorize
from entropy.i18n import _
from entropy.output import darkgreen, purple, blue, \
brown, bold, red, darkred, teal, decolorize
from entropy.graph import Graph
from entropy.misc import Lifo
from entropy.i18n import _
import entropy.dep
def cleanup(directories):
"""
Temporary files cleaner.
@param directories: list of directory paths
@type directories: list
@return: exit status
@rtype: int
"""
counter = 0
for xdir in directories:
if not os.path.isdir(xdir):
continue
print_info("%s %s %s..." % (_("Cleaning"), darkgreen(xdir),
_("directory"),), back = True)
for data in os.listdir(xdir):
subprocess.call(["rm", "-rf", os.path.join(xdir, data)])
counter += 1
def show_dependencies_legend(entropy_server, indent = '',
get_data = False):
data = []
dep_type_ids = etpConst['dependency_type_ids']
for dep_id, dep_val in sorted(dep_type_ids.items(),
key = lambda x: x[0], reverse = True):
print_info("%s: %s %s" % (
_("Cleaned"), counter, _("files and directories"),))
return 0
def print_bashcomp(data, cmdline, cb_map):
"""
Print bash completion string for readline consumption using Entropy
menu declaration format.
@param data: Entropy menu declaration format
@type data: list
@param cmdline: list of cmdline args
@type cmdline: list
@param cb_map: map of completed commands callbacks, signature:
<list of args to append> cb_map_callback(cur_cmdline)
@type cb_map: dict
"""
cmdline = cmdline[1:]
cmdline_len = len(cmdline) # drop --stuff
comp_line = []
previous_complete = False
if cmdline:
last_cmdline = cmdline[-1]
else:
last_cmdline = '###impossible'
try:
prev_cmdline = cmdline[-2]
except IndexError:
prev_cmdline = None
cur_cb = cb_map.get(prev_cmdline)
if cur_cb is not None:
ext_comp_line = cur_cb(cmdline)
if ext_comp_line:
comp_line.extend(ext_comp_line)
got_inside = False
for item in data:
if item is None:
continue
if item[0] == cmdline_len:
if item[1].startswith("--") and \
not last_cmdline.startswith("-"):
# skip --opts
continue
got_inside = True
if item[1] == last_cmdline:
cmdline_len += 1
previous_complete = True
continue
elif item[1].startswith(last_cmdline):
comp_line.append(item[1])
elif previous_complete:
comp_line.append(item[1])
if (item[0] < cmdline_len) and got_inside and previous_complete:
break
if comp_line:
print_generic(' '.join(comp_line))
def print_menu(data, args = None):
"""
Function used by Entropy text client (will be moved from here) to
print the menu output given a properly formatted list.
This method is not intended for general used and will be moved away from
here.
"""
if args == None:
args = []
def orig_myfunc(x):
return x
def orig_myfunc_desc(x):
return x
try:
i = args.index("--help")
del args[i]
command = args.pop(0)
except ValueError:
command = None
except IndexError:
command = None
section_found = False
search_depth = 1
for item in data:
myfunc = orig_myfunc
myfunc_desc = orig_myfunc_desc
if not item:
if command is None:
writechar("\n")
dep_desc = etpConst['dependency_type_ids_desc'].get(
dep_id, _("N/A"))
txt = '%s%s%s%s %s' % (
indent, teal("{"), dep_val, teal("}"), dep_desc,)
if get_data:
data.append(txt)
else:
n_indent = item[0]
name = item[1]
n_d_ident = item[2]
desc = item[3]
if command is not None:
name_strip = name.split()[0].strip()
if name_strip == command and n_indent == search_depth:
try:
command = args.pop(0)
search_depth = n_indent + 1
except IndexError:
command = "##unused_from_now_on"
section_found = True
indent_level = n_indent
elif section_found:
if n_indent <= indent_level:
return
else:
continue
entropy_server.output(txt)
if get_data:
return data
if n_indent == 0:
writechar(" ")
# setup identation
ind_th = 0
if command is not None: # so that partial --help looks nicer
ind_th = 1
while n_indent > ind_th:
n_indent -= 1
writechar("\t")
n_indent = item[0]
# write name
if n_indent == 0:
myfunc = darkgreen
elif n_indent == 1:
myfunc = blue
myfunc_desc = darkgreen
elif n_indent == 2:
if not name.startswith("--"):
myfunc = red
myfunc_desc = brown
elif n_indent == 3:
myfunc = darkblue
myfunc_desc = purple
func_out = myfunc(name)
print_generic(func_out, end = "")
# write desc
if desc:
while n_d_ident > 0:
n_d_ident -= 1
writechar("\t")
desc = myfunc_desc(desc)
print_generic(desc, end = "")
writechar("\n")
def print_table(lines_data, cell_spacing = 2, cell_padding = 0,
side_color = darkgreen):
"""
Print a table composed by len(lines_data[i]) columns and len(lines_data)
rows.
@param lines_data: list of row data
@type lines_data: list
@keyword cell_spacing: cell spacing
@type cell_spacing: int
@keyword cell_padding: cell padding
@type cell_padding: int
@keyword side_color: colorization callback function
@type side_color: callable
"""
column_sizes = {}
padding_side = int((cell_padding / 2))
col_n = 0
for cols in lines_data:
if not isinstance(cols, (list, tuple)):
# can be a plain string
continue
col_n = 0
for cell in cols:
cell_len = len(" "*padding_side + decolorize(cell.split("\n")[0]) \
+ " "*padding_side)
cur_len = column_sizes.get(col_n)
if cur_len is None:
column_sizes[col_n] = cell_len
elif cur_len < cell_len:
column_sizes[col_n] = cell_len
col_n += 1
# now actually print
if col_n > 0:
column_sizes[col_n - 1] = 0
for cols in lines_data:
print_generic(side_color(">>") + " ", end = " ")
if isinstance(cols, (list, tuple)):
col_n = 0
for cell in cols:
max_len = column_sizes[col_n]
cell = " "*padding_side + cell + " "*padding_side
delta_len = max_len - len(decolorize(cell.split("\n")[0])) + \
cell_spacing
if col_n == (len(cols) - 1):
print_generic(cell)
else:
print_generic(cell, end = " "*delta_len)
col_n += 1
else:
print_generic(cols)
def countdown(secs = 5, what = "Counting...", back = False):
"""
Print countdown.
@keyword secs: countdown seconds
@type secs: int
@keyword what: countdown text
@type what: string
@keyword back: write \n at the end if True
@type back: bool
"""
if secs:
if back:
try:
print_generic(red(">>") + " " + what, end = "")
except UnicodeEncodeError:
print_generic(red(">>") + " " + what.encode('utf-8'),
end = "")
else:
print_generic(what)
for i in range(secs)[::-1]:
sys.stdout.write(purple(str(i+1)+" "))
sys.stdout.flush()
time.sleep(1)
def enlightenatom(atom):
"""
Colorize package atoms with standard colors.
@param atom: atom string
@type atom: string
@return: colorized string
@rtype: string
"""
entropy_rev = entropy.dep.dep_get_entropy_revision(atom)
if entropy_rev is None:
entropy_rev = ''
else:
entropy_rev = '~%s' % (str(entropy_rev),)
entropy_tag = entropy.dep.dep_gettag(atom)
if entropy_tag is None:
entropy_tag = ''
else:
entropy_tag = '#%s' % (entropy_tag,)
clean_atom = entropy.dep.remove_entropy_revision(atom)
clean_atom = entropy.dep.remove_tag(clean_atom)
only_cpv = entropy.dep.dep_getcpv(clean_atom)
operator = clean_atom[:len(clean_atom)-len(only_cpv)]
cat, name, pv, rev = entropy.dep.catpkgsplit(only_cpv)
if rev == "r0":
rev = ''
else:
rev = '-%s' % (rev,)
return "%s%s%s%s%s%s%s" % (purple(operator), teal(cat + "/"),
darkgreen(name), purple("-"+pv), purple(rev), brown(entropy_tag),
teal(entropy_rev),)
def read_equo_release():
"""
Read Equo release.
@rtype: None
@return: None
"""
# handle Entropy Version
revision_file = "../client/revision"
if not os.path.isfile(revision_file):
revision_file = os.path.join(etpConst['installdir'],
'client/revision')
if os.path.isfile(revision_file) and \
os.access(revision_file, os.R_OK):
enc = etpConst['conf_encoding']
with codecs.open(revision_file, "r", encoding=enc) \
as rev_f:
myrev = rev_f.readline().strip()
return myrev
return "0"
def get_file_mime(file_path):
if not os.path.isfile(file_path):
return None
try:
import magic
except ImportError:
return None
handle = magic.open(magic.MAGIC_MIME)
handle.load()
mime = handle.file(file_path)
handle.close()
if mime:
mime = mime.split(";")[0]
return mime
def _transfer_callback(transfered, total, download):
if download:
action = _("Downloading")
else:
action = _("Uploading")
percent = 100
if (total > 0) and (transfered <= total):
percent = int(round((float(transfered)/total) * 100, 1))
msg = "[%s%s] %s ..." % (purple(str(percent)), "%", teal(action))
print_info(msg, back = True)
def get_entropy_webservice(entropy_client, repository_id, tx_cb = False):
"""
Get Entropy Web Services service object (ClientWebService).
@param entropy_client: Entropy Client interface
@type entropy_client: entropy.client.interfaces.Client
@param repository_id: repository identifier
@type repository_id: string
@return: the ClientWebService instance
@rtype: entropy.client.services.interfaces.ClientWebService
@raise WebService.UnsupportedService: if service is unsupported by
repository
"""
factory = entropy_client.WebServices()
webserv = factory.new(repository_id)
if tx_cb:
webserv._set_transfer_callback(_transfer_callback)
return webserv
def print_package_info(package_id, entropy_client, entropy_repository,
def print_package_info(package_id, entropy_server, entropy_repository,
installed_search = False, strict_output = False, extended = False,
quiet = False, show_repo_if_quiet = False, show_desc_if_quiet = False):
quiet = False, show_repo_if_quiet = False, show_desc_if_quiet = False,
show_slot_if_quiet = False):
"""
Print Entropy Package Metadata in a pretty and uniform way.
"""
@@ -402,7 +56,10 @@ def print_package_info(package_id, entropy_client, entropy_repository,
entropy_repository.retrieveDescription(package_id),)
if not extended:
pkgatom = entropy.dep.dep_getkey(pkgatom)
entropy_client.output(
if show_slot_if_quiet:
pkgatom += etpConst['entropyslotprefix']
pkgatom += entropy_repository.retrieveSlot(package_id)
entropy_server.output(
"%s%s%s" % (repoinfo, pkgatom, desc,),
level="generic")
return
@@ -434,18 +91,18 @@ def print_package_info(package_id, entropy_client, entropy_repository,
if not installed_search:
# client info
pkginstalled = entropy_client.installed_repository().atomMatch(
pkginstalled = entropy_server.installed_repository().atomMatch(
entropy.dep.dep_getkey(pkgatom), matchSlot = pkgslot)
if pkginstalled[1] == 0:
idx = pkginstalled[0]
# found
installed_ver = entropy_client.installed_repository(
installed_ver = entropy_server.installed_repository(
).retrieveVersion(idx) or corrupted_str
installed_tag = entropy_client.installed_repository(
installed_tag = entropy_server.installed_repository(
).retrieveTag(idx)
if not installed_tag:
installed_tag = "NoTag"
installed_rev = entropy_client.installed_repository(
installed_rev = entropy_server.installed_repository(
).retrieveRevision(idx)
if installed_rev is None:
installed_rev = const_convert_to_unicode("0")
@@ -454,7 +111,7 @@ def print_package_info(package_id, entropy_client, entropy_repository,
toc = []
entropy_client.output(red(" @@ %s: " % (_("Package"),) ) + \
entropy_server.output(red(" @@ %s: " % (_("Package"),) ) + \
bold(pkgatom) + \
" "+ blue("%s: " % (_("branch"),)) + bold(pkgbranch) + \
", [" + purple(str(entropy_repository.repository_id())) + "] ")
@@ -478,7 +135,7 @@ def print_package_info(package_id, entropy_client, entropy_repository,
if package_id_masked == -1:
pkgmasked = True
masking_reason = ", %s" % (
entropy_client.Settings()['pkg_masking_reasons'].get(
entropy_server.Settings()['pkg_masking_reasons'].get(
idmasking_reason),)
toc.append((darkgreen(" %s:" % (_("Masked"),)),
@@ -535,7 +192,7 @@ def print_package_info(package_id, entropy_client, entropy_repository,
# show legend
len_txt = " %s" % (brown("##"),)
toc.append((len_txt, "%s:" % (blue(_("Legend")),),))
dep_leg = show_dependencies_legend(entropy_client,
dep_leg = show_dependencies_legend(entropy_server,
indent = "", get_data = True)
toc.extend([(len_txt, x) for x in dep_leg])
@@ -548,8 +205,8 @@ def print_package_info(package_id, entropy_client, entropy_repository,
brown(conflict),))
home_txt = " %s:" % (_("Homepage"),)
home_lines = _my_formatted_print(
entropy_client, pkghome, "", "", color = brown,
home_lines = _formatted_print(
entropy_server, pkghome, "", "", color = brown,
min_chars = 15, get_data = True)
for home_line in home_lines:
toc.append((darkgreen(home_txt), home_line,))
@@ -558,8 +215,8 @@ def print_package_info(package_id, entropy_client, entropy_repository,
if not strict_output:
desc_txt = " %s:" % (_("Description"),)
desc_lines = _my_formatted_print(
entropy_client, pkgdesc, "", "", get_data = True)
desc_lines = _formatted_print(
entropy_server, pkgdesc, "", "", get_data = True)
for desc_line in desc_lines:
toc.append((darkgreen(desc_txt), purple(desc_line)))
desc_txt = " "
@@ -567,8 +224,8 @@ def print_package_info(package_id, entropy_client, entropy_repository,
if extended:
pkguseflags = entropy_repository.retrieveUseflags(package_id)
use_txt = " %s:" % (_("USE flags"),)
use_lines = _my_formatted_print(
entropy_client,
use_lines = _formatted_print(
entropy_server,
pkguseflags, "", "", color = teal,
get_data = True)
for use_line in use_lines:
@@ -607,8 +264,8 @@ def print_package_info(package_id, entropy_client, entropy_repository,
pkgkeywords = ' '.join(
sorted(entropy_repository.retrieveKeywords(package_id)))
keyword_txt = " %s:" % (_("Keywords"),)
keyword_lines = _my_formatted_print(
entropy_client, pkgkeywords, "", "",
keyword_lines = _formatted_print(
entropy_server, pkgkeywords, "", "",
color = brown, get_data = True)
for keyword_line in keyword_lines:
toc.append((darkgreen(keyword_txt), brown(keyword_line)))
@@ -630,10 +287,10 @@ def print_package_info(package_id, entropy_client, entropy_repository,
toc.append((darkgreen(" %s:" % (_("License"),)),
teal(pkglic)))
print_table(toc, cell_spacing = 3)
print_table(entropy_server, toc, cell_spacing = 3)
def _my_formatted_print(entropy_client, data, header, reset_columns,
min_chars = 25, color = None, get_data = False):
def _formatted_print(entropy_server, data, header, reset_columns,
min_chars = 25, color = None, get_data = False):
out_data = []
@@ -657,35 +314,74 @@ def _my_formatted_print(entropy_client, data, header, reset_columns,
if get_data:
out_data.append(desc_text)
else:
entropy_client.output(desc_text)
entropy_server.output(desc_text)
desc_text = reset_columns
if fcount > 0:
if get_data:
out_data.append(desc_text)
else:
entropy_client.output(desc_text)
entropy_server.output(desc_text)
if get_data:
return out_data
def show_dependencies_legend(entropy_client, indent = '',
get_data = False):
data = []
dep_type_ids = etpConst['dependency_type_ids']
for dep_id, dep_val in sorted(dep_type_ids.items(),
key = lambda x: x[0], reverse = True):
def print_table(entropy_server, lines_data,
cell_spacing=2, cell_padding=0,
side_color=darkgreen):
"""
Print a table composed by len(lines_data[i]) columns and len(lines_data)
rows.
dep_desc = etpConst['dependency_type_ids_desc'].get(
dep_id, _("N/A"))
txt = '%s%s%s%s %s' % (
indent, teal("{"), dep_val, teal("}"), dep_desc,)
if get_data:
data.append(txt)
@param lines_data: list of row data
@type lines_data: list
@keyword cell_spacing: cell spacing
@type cell_spacing: int
@keyword cell_padding: cell padding
@type cell_padding: int
@keyword side_color: colorization callback function
@type side_color: callable
"""
column_sizes = {}
padding_side = int((cell_padding / 2))
col_n = 0
for cols in lines_data:
if not isinstance(cols, (list, tuple)):
# can be a plain string
continue
col_n = 0
for cell in cols:
cell_len = len(" "*padding_side + decolorize(cell.split("\n")[0]) \
+ " "*padding_side)
cur_len = column_sizes.get(col_n)
if cur_len is None:
column_sizes[col_n] = cell_len
elif cur_len < cell_len:
column_sizes[col_n] = cell_len
col_n += 1
# now actually print
if col_n > 0:
column_sizes[col_n - 1] = 0
for cols in lines_data:
txt = side_color(">>") + " "
if isinstance(cols, (list, tuple)):
col_n = 0
for cell in cols:
max_len = column_sizes[col_n]
cell = " "*padding_side + cell + " "*padding_side
delta_len = max_len - \
len(decolorize(cell.split("\n")[0])) + \
cell_spacing
if col_n == (len(cols) - 1):
txt += cell
else:
txt += cell + " "*delta_len
col_n += 1
else:
entropy_client.output(txt)
if get_data:
return data
txt += cols
entropy_server.output(txt, level="generic")
def revgraph_packages(packages, entropy_client, complete = False,
repository_ids = None, quiet = False):
@@ -811,7 +507,8 @@ def _revgraph_package(entropy_client, installed_pkg_id, package, dbconn,
# ensure package availability in graph, initialize now
graph.add(inst_item, set())
rev_pkgs_sorter = lambda x: dbconn.retrieveAtom(x)
def rev_pkgs_sorter(_pkg_id):
return dbconn.retrieveAtom(_pkg_id)
while stack.is_filled():
@@ -819,7 +516,7 @@ def _revgraph_package(entropy_client, installed_pkg_id, package, dbconn,
if item in stack_cache:
continue
stack_cache.add(item)
pkg_id, was_dep = item
pkg_id, _was_dep = item
rev_deps = dbconn.retrieveReverseDependencies(pkg_id,
exclude_deptypes = excluded_dep_types)
@@ -904,7 +601,7 @@ def _graph_package(match, package, entropy_intf, show_complete = False,
if item in stack_cache:
continue
stack_cache.add(item)
((pkg_id, repo_id,), was_dep, dep_type) = item
((pkg_id, repo_id,), _was_dep, _dep_type) = item
# deps
repodb = entropy_intf.open_repository(repo_id)
+1 -1
View File
@@ -20,12 +20,12 @@ from entropy.output import teal, purple, darkgreen, blue, brown, print_info, \
from entropy.exceptions import DependenciesNotRemovable
from entropy.i18n import _
from entropy.client.interfaces import Client
from entropy.cli import print_package_info
import entropy.dep
import entropy.tools
# solo modules
from solo.commands.install import SoloInstall
from solo.utils import print_package_info
APP_NAME = os.path.basename(sys.argv[0])
KERNEL_BINARY_VIRTUAL = const_convert_to_unicode("virtual/linux-binary")