[ Avaa Bypassed ]




Upload:

Command:

www-data@18.216.78.190: ~ $
"""Discover and load entry points from installed packages."""
# Copyright (c) Thomas Kluyver and contributors
# Distributed under the terms of the MIT license; see LICENSE file.

from contextlib import contextmanager
import glob
from importlib import import_module
import io
import itertools
import os.path as osp
import re
import sys
import warnings
import zipfile

import configparser

entry_point_pattern = re.compile(r"""
(?P<modulename>\w+(\.\w+)*)
(:(?P<objectname>\w+(\.\w+)*))?
\s*
(\[(?P<extras>.+)\])?
$
""", re.VERBOSE)

file_in_zip_pattern = re.compile(r"""
(?P<dist_version>[^/\\]+)\.(dist|egg)-info
[/\\]entry_points.txt$
""", re.VERBOSE)

__version__ = '0.3'

class BadEntryPoint(Exception):
    """Raised when an entry point can't be parsed.
    """
    def __init__(self, epstr):
        self.epstr = epstr

    def __str__(self):
        return "Couldn't parse entry point spec: %r" % self.epstr

    @staticmethod
    @contextmanager
    def err_to_warnings():
        try:
            yield
        except BadEntryPoint as e:
            warnings.warn(str(e))

class NoSuchEntryPoint(Exception):
    """Raised by :func:`get_single` when no matching entry point is found."""
    def __init__(self, group, name):
        self.group = group
        self.name = name

    def __str__(self):
        return "No {!r} entry point found in group {!r}".format(self.name, self.group)


class CaseSensitiveConfigParser(configparser.ConfigParser):
    optionxform = staticmethod(str)


class EntryPoint(object):
    def __init__(self, name, module_name, object_name, extras=None, distro=None):
        self.name = name
        self.module_name = module_name
        self.object_name = object_name
        self.extras = extras
        self.distro = distro

    def __repr__(self):
        return "EntryPoint(%r, %r, %r, %r)" % \
            (self.name, self.module_name, self.object_name, self.distro)

    def load(self):
        """Load the object to which this entry point refers.
        """
        mod = import_module(self.module_name)
        obj = mod
        if self.object_name:
            for attr in self.object_name.split('.'):
                obj = getattr(obj, attr)
        return obj

    @classmethod
    def from_string(cls, epstr, name, distro=None):
        """Parse an entry point from the syntax in entry_points.txt

        :param str epstr: The entry point string (not including 'name =')
        :param str name: The name of this entry point
        :param Distribution distro: The distribution in which the entry point was found
        :rtype: EntryPoint
        :raises BadEntryPoint: if *epstr* can't be parsed as an entry point.
        """
        m = entry_point_pattern.match(epstr)
        if m:
            mod, obj, extras = m.group('modulename', 'objectname', 'extras')
            if extras is not None:
                extras = re.split(r',\s*', extras)
            return cls(name, mod, obj, extras, distro)
        else:
            raise BadEntryPoint(epstr)

class Distribution(object):
    def __init__(self, name, version):
        self.name = name
        self.version = version

    def __repr__(self):
        return "Distribution(%r, %r)" % (self.name, self.version)


def iter_files_distros(path=None, repeated_distro='first'):
    if path is None:
        path = sys.path

    # Distributions found earlier in path will shadow those with the same name
    # found later. If these distributions used different module names, it may
    # actually be possible to import both, but in most cases this shadowing
    # will be correct.
    distro_names_seen = set()

    for folder in path:
        if folder.rstrip('/\\').endswith('.egg'):
            # Gah, eggs
            egg_name = osp.basename(folder)
            if '-' in egg_name:
                distro = Distribution(*egg_name.split('-')[:2])

                if (repeated_distro == 'first') \
                        and (distro.name in distro_names_seen):
                    continue
                distro_names_seen.add(distro.name)
            else:
                distro = None

            if osp.isdir(folder):
                ep_path = osp.join(folder, 'EGG-INFO', 'entry_points.txt')
                if osp.isfile(ep_path):
                    cp = CaseSensitiveConfigParser(delimiters=('=',))
                    cp.read([ep_path])
                    yield cp, distro

            elif zipfile.is_zipfile(folder):
                z = zipfile.ZipFile(folder)
                try:
                    info = z.getinfo('EGG-INFO/entry_points.txt')
                except KeyError:
                    continue
                cp = CaseSensitiveConfigParser(delimiters=('=',))
                with z.open(info) as f:
                    fu = io.TextIOWrapper(f)
                    cp.read_file(fu,
                        source=osp.join(folder, 'EGG-INFO', 'entry_points.txt'))
                yield cp, distro

        # zip imports, not egg
        elif zipfile.is_zipfile(folder):
            with zipfile.ZipFile(folder) as zf:
                for info in zf.infolist():
                    m = file_in_zip_pattern.match(info.filename)
                    if not m:
                        continue

                    distro_name_version = m.group('dist_version')
                    if '-' in distro_name_version:
                        distro = Distribution(*distro_name_version.split('-', 1))

                        if (repeated_distro == 'first') \
                                and (distro.name in distro_names_seen):
                            continue
                        distro_names_seen.add(distro.name)
                    else:
                        distro = None

                    cp = CaseSensitiveConfigParser(delimiters=('=',))
                    with zf.open(info) as f:
                        fu = io.TextIOWrapper(f)
                        cp.read_file(fu, source=osp.join(folder, info.filename))
                    yield cp, distro

        # Regular file imports (not egg, not zip file)
        for path in itertools.chain(
            glob.iglob(osp.join(folder, '*.dist-info', 'entry_points.txt')),
            glob.iglob(osp.join(folder, '*.egg-info', 'entry_points.txt'))
        ):
            distro_name_version = osp.splitext(osp.basename(osp.dirname(path)))[0]
            if '-' in distro_name_version:
                distro = Distribution(*distro_name_version.split('-', 1))

                if (repeated_distro == 'first') \
                        and (distro.name in distro_names_seen):
                    continue
                distro_names_seen.add(distro.name)
            else:
                distro = None
            cp = CaseSensitiveConfigParser(delimiters=('=',))
            cp.read([path])
            yield cp, distro

def get_single(group, name, path=None):
    """Find a single entry point.

    Returns an :class:`EntryPoint` object, or raises :exc:`NoSuchEntryPoint`
    if no match is found.
    """
    for config, distro in iter_files_distros(path=path):
        if (group in config) and (name in config[group]):
            epstr = config[group][name]
            with BadEntryPoint.err_to_warnings():
                return EntryPoint.from_string(epstr, name, distro)

    raise NoSuchEntryPoint(group, name)

def get_group_named(group, path=None):
    """Find a group of entry points with unique names.

    Returns a dictionary of names to :class:`EntryPoint` objects.
    """
    result = {}
    for ep in get_group_all(group, path=path):
        if ep.name not in result:
            result[ep.name] = ep
    return result

def get_group_all(group, path=None):
    """Find all entry points in a group.

    Returns a list of :class:`EntryPoint` objects.
    """
    result = []
    for config, distro in iter_files_distros(path=path):
        if group in config:
            for name, epstr in config[group].items():
                with BadEntryPoint.err_to_warnings():
                    result.append(EntryPoint.from_string(epstr, name, distro))

    return result

if __name__ == '__main__':
    import pprint
    pprint.pprint(get_group_all('console_scripts'))

Filemanager

Name Type Size Permission Actions
AptUrl Folder 0755
Click-7.0.egg-info Folder 0755
CommandNotFound Folder 0755
ConfigArgParse-0.13.0.egg-info Folder 0755
DistUpgrade Folder 0755
HweSupportStatus Folder 0755
LanguageSelector Folder 0755
Mako-1.1.0.egg-info Folder 0755
MarkupSafe-1.1.0.egg-info Folder 0755
NvidiaDetector Folder 0755
OpenSSL Folder 0755
PIL Folder 0755
Pillow-7.0.0.egg-info Folder 0755
PyGObject-3.36.0.egg-info Folder 0755
PyJWT-1.7.1.egg-info Folder 0755
PyNaCl-1.3.0.egg-info Folder 0755
Quirks Folder 0755
SecretStorage-2.3.1.egg-info Folder 0755
UbuntuDrivers Folder 0755
UpdateManager Folder 0755
__pycache__ Folder 0755
acme Folder 0755
acme-1.1.0.egg-info Folder 0755
apport Folder 0755
apt Folder 0755
apt_inst-stubs Folder 0755
apt_pkg-stubs Folder 0755
aptdaemon Folder 0755
aptsources Folder 0755
bcrypt Folder 0755
bcrypt-3.1.7.egg-info Folder 0755
blinker Folder 0755
cairo Folder 0755
certbot Folder 0755
certbot-0.40.0.egg-info Folder 0755
certbot_apache Folder 0755
certbot_apache-0.39.0.egg-info Folder 0755
certifi Folder 0755
certifi-2019.11.28.egg-info Folder 0755
chardet Folder 0755
chardet-3.0.4.egg-info Folder 0755
click Folder 0755
colorama Folder 0755
colorama-0.4.3.egg-info Folder 0755
configobj-5.0.6.egg-info Folder 0755
cryptography Folder 0755
cryptography-2.8.egg-info Folder 0755
cupshelpers Folder 0755
dateutil Folder 0755
dbus Folder 0755
dbus_python-1.2.16.egg-info Folder 0755
debian Folder 0755
debian_bundle Folder 0755
defer Folder 0755
defer-1.0.6.egg-info Folder 0755
distro-1.4.0.egg-info Folder 0755
distro_info-0.23ubuntu1.egg-info Folder 0755
duplicity Folder 0755
duplicity-0.8.12.0.egg-info Folder 0755
fasteners Folder 0755
fasteners-0.14.1.egg-info Folder 0755
future Folder 0755
future-0.18.2.egg-info Folder 0755
gi Folder 0755
google Folder 0755
httplib2 Folder 0755
httplib2-0.14.0.egg-info Folder 0755
icu Folder 0755
idna Folder 0755
idna-2.8.egg-info Folder 0755
janitor Folder 0755
josepy Folder 0755
josepy-1.2.0.egg-info Folder 0755
jwt Folder 0755
keyring Folder 0755
keyring-18.0.1.egg-info Folder 0755
language_selector-0.1.egg-info Folder 0755
launchpadlib Folder 0755
launchpadlib-1.10.13.egg-info Folder 0755
lazr Folder 0755
lazr.restfulclient-0.14.2.egg-info Folder 0755
lazr.uri-1.0.3.egg-info Folder 0755
libfuturize Folder 0755
libpasteurize Folder 0755
lockfile Folder 0755
lockfile-0.12.2.egg-info Folder 0755
louis Folder 0755
macaroonbakery Folder 0755
macaroonbakery-1.3.1.egg-info Folder 0755
mako Folder 0755
markupsafe Folder 0755
mock Folder 0755
mock-3.0.5.egg-info Folder 0755
monotonic-1.5.egg-info Folder 0755
nacl Folder 0755
netifaces-0.10.4.egg-info Folder 0755
oauthlib Folder 0755
oauthlib-3.1.0.egg-info Folder 0755
olefile Folder 0755
olefile-0.46.egg-info Folder 0755
orca Folder 0755
paramiko Folder 0755
paramiko-2.6.0.egg-info Folder 0755
parsedatetime Folder 0755
parsedatetime-2.4.egg-info Folder 0755
past Folder 0755
pbr Folder 0755
pbr-5.4.5.egg-info Folder 0755
pexpect Folder 0755
pkg_resources Folder 0755
protobuf-3.6.1.egg-info Folder 0755
ptyprocess Folder 0755
pyOpenSSL-19.0.0.egg-info Folder 0755
pyRFC3339-1.1.egg-info Folder 0755
pyatspi Folder 0755
pygtkcompat Folder 0755
pymacaroons Folder 0755
pymacaroons-0.13.0.egg-info Folder 0755
pyrfc3339 Folder 0755
python_apt-2.0.1+ubuntu0.20.4.1.egg-info Folder 0755
python_dateutil-2.7.3.egg-info Folder 0755
python_debian-0.1.36ubuntu1.egg-info Folder 0755
pytz Folder 0755
pytz-2019.3.egg-info Folder 0755
reportlab Folder 0755
reportlab-3.5.34.egg-info Folder 0755
requests Folder 0755
requests-2.22.0.egg-info Folder 0755
requests_toolbelt Folder 0755
requests_toolbelt-0.8.0.egg-info Folder 0755
requests_unixsocket Folder 0755
requests_unixsocket-0.2.0.egg-info Folder 0755
secretstorage Folder 0755
setuptools Folder 0755
setuptools-45.2.0.egg-info Folder 0755
simplejson Folder 0755
six-1.14.0.egg-info Folder 0755
softwareproperties Folder 0755
speechd Folder 0755
speechd_config Folder 0755
ssh_import_id Folder 0755
ssh_import_id-5.10.egg-info Folder 0755
systemd Folder 0755
uaclient Folder 0755
ubuntu_advantage_tools-8001.egg-info Folder 0755
ubuntu_drivers_common-0.0.0.egg-info Folder 0755
ufw Folder 0755
unattended_upgrades-0.1.egg-info Folder 0755
urllib3 Folder 0755
urllib3-1.25.8.egg-info Folder 0755
usbcreator Folder 0755
wadllib Folder 0755
wadllib-1.3.3.egg-info Folder 0755
xdg Folder 0755
xkit Folder 0755
yaml Folder 0755
zope Folder 0755
zope.component-4.3.0.egg-info Folder 0755
zope.event-4.4.egg-info Folder 0755
zope.hookable-5.0.0.egg-info Folder 0755
zope.interface-4.7.1.egg-info Folder 0755
Brlapi-0.7.0.egg-info File 242 B 0644
PyICU-2.4.2.egg-info File 10.44 KB 0644
PyICU.py File 1.43 KB 0644
PyYAML-5.3.1.egg-info File 1.74 KB 0644
_cffi_backend.cpython-38-x86_64-linux-gnu.so File 181.92 KB 0644
_dbus_bindings.cpython-38-x86_64-linux-gnu.so File 168.16 KB 0644
_dbus_glib_bindings.cpython-38-x86_64-linux-gnu.so File 22.54 KB 0644
_icu.cpython-38-x86_64-linux-gnu.so File 1.1 MB 0644
_ldb_text.py File 3.45 KB 0644
_version.py File 21 B 0644
_yaml.cpython-38-x86_64-linux-gnu.so File 276.73 KB 0644
apport_python_hook.py File 7.87 KB 0644
apt_inst.cpython-38-x86_64-linux-gnu.so File 58.67 KB 0644
apt_pkg.cpython-38-x86_64-linux-gnu.so File 350.95 KB 0644
apturl-0.5.2.egg-info File 180 B 0644
augeas.py File 23 KB 0644
blinker-1.4.egg-info File 3.81 KB 0644
brlapi.cpython-38-x86_64-linux-gnu.so File 241.27 KB 0644
command_not_found-0.3.egg-info File 189 B 0644
configargparse.py File 40.47 KB 0644
configobj.py File 87.51 KB 0644
cups.cpython-38-x86_64-linux-gnu.so File 196.14 KB 0644
cupsext.cpython-38-x86_64-linux-gnu.so File 45.04 KB 0644
cupshelpers-1.0.egg-info File 231 B 0644
deb822.py File 273 B 0644
debconf.py File 6.61 KB 0644
distro.py File 42.24 KB 0644
distro_info.py File 10.89 KB 0644
easy_install.py File 126 B 0644
entrypoints.egg-info File 226 B 0644
entrypoints.py File 7.99 KB 0644
hpmudext.cpython-38-x86_64-linux-gnu.so File 18.85 KB 0644
language_support_pkgs.py File 9.7 KB 0644
ldb.cpython-38-x86_64-linux-gnu.so File 102.25 KB 0644
louis-3.12.0.egg-info File 527 B 0644
lsb_release.py File 14.55 KB 0644
monotonic.py File 6.95 KB 0644
netifaces.cpython-38-x86_64-linux-gnu.so File 22.68 KB 0644
netifaces.cpython-38d-x86_64-linux-gnu.so File 26.71 KB 0644
pcardext.cpython-38-x86_64-linux-gnu.so File 22.66 KB 0644
pexpect-4.6.0.egg-info File 2.23 KB 0644
problem_report.py File 26.25 KB 0644
pycairo-1.16.2.egg-info File 3.75 KB 0644
pycups-1.9.73.egg-info File 1.31 KB 0644
python_augeas-0.5.0.egg-info File 238 B 0644
pyxdg-0.26.egg-info File 576 B 0644
scanext.cpython-38-x86_64-linux-gnu.so File 23.35 KB 0644
simplejson-3.16.0.egg-info File 2.97 KB 0644
six.py File 33.28 KB 0644
systemd_python-234.egg-info File 586 B 0644
talloc.cpython-38-x86_64-linux-gnu.so File 15.64 KB 0644
ufw-0.36.egg-info File 261 B 0644
uno.py File 17.11 KB 0644
unohelper.py File 10.7 KB 0644
usb_creator-0.3.7.egg-info File 219 B 0644
validate.py File 46.14 KB 0644
xkit-0.0.0.egg-info File 266 B 0644
zope.component-4.3.0-nspkg.pth File 529 B 0644
zope.event-4.4-nspkg.pth File 529 B 0644
zope.hookable-5.0.0-nspkg.pth File 529 B 0644
zope.interface-4.7.1-nspkg.pth File 529 B 0644