OXIESEC PANEL
- Current Dir:
/
/
snap
/
certbot-dns-digitalocean
/
4356
/
lib
/
python3.12
/
site-packages
/
setuptools
Server IP: 139.59.38.164
Upload:
Create Dir:
Name
Size
Modified
Perms
📁
..
-
06/12/2025 06:18:03 PM
rwxr-xr-x
📄
__init__.py
10.16 KB
06/12/2025 06:17:55 PM
rw-r--r--
📁
__pycache__
-
06/12/2025 06:18:03 PM
rwxr-xr-x
📄
_core_metadata.py
11.7 KB
06/12/2025 06:17:55 PM
rw-r--r--
📁
_distutils
-
06/12/2025 06:18:03 PM
rwxr-xr-x
📄
_entry_points.py
2.41 KB
06/12/2025 06:17:55 PM
rw-r--r--
📄
_imp.py
2.38 KB
06/12/2025 06:17:55 PM
rw-r--r--
📄
_importlib.py
223 bytes
06/12/2025 06:17:55 PM
rw-r--r--
📄
_itertools.py
657 bytes
06/12/2025 06:17:55 PM
rw-r--r--
📄
_normalization.py
5.69 KB
06/12/2025 06:17:55 PM
rw-r--r--
📄
_path.py
2.62 KB
06/12/2025 06:17:55 PM
rw-r--r--
📄
_reqs.py
1.4 KB
06/12/2025 06:17:55 PM
rw-r--r--
📄
_scripts.py
10.6 KB
06/12/2025 06:17:55 PM
rw-r--r--
📄
_shutil.py
1.54 KB
06/12/2025 06:17:55 PM
rw-r--r--
📄
_static.py
4.74 KB
06/12/2025 06:17:55 PM
rw-r--r--
📁
_vendor
-
06/12/2025 06:18:03 PM
rwxr-xr-x
📄
archive_util.py
7.18 KB
06/12/2025 06:17:55 PM
rw-r--r--
📄
build_meta.py
19.5 KB
06/12/2025 06:17:55 PM
rw-r--r--
📄
cli-32.exe
11.5 KB
06/12/2025 06:17:55 PM
rw-r--r--
📄
cli-64.exe
14 KB
06/12/2025 06:17:55 PM
rw-r--r--
📄
cli-arm64.exe
13.5 KB
06/12/2025 06:17:55 PM
rw-r--r--
📄
cli.exe
11.5 KB
06/12/2025 06:17:55 PM
rw-r--r--
📁
command
-
06/12/2025 06:18:03 PM
rwxr-xr-x
📁
compat
-
06/12/2025 06:18:03 PM
rwxr-xr-x
📁
config
-
06/12/2025 06:18:03 PM
rwxr-xr-x
📄
depends.py
5.83 KB
06/12/2025 06:17:55 PM
rw-r--r--
📄
discovery.py
20.76 KB
06/12/2025 06:17:55 PM
rw-r--r--
📄
dist.py
43.93 KB
06/12/2025 06:17:55 PM
rw-r--r--
📄
errors.py
2.95 KB
06/12/2025 06:17:55 PM
rw-r--r--
📄
extension.py
6.53 KB
06/12/2025 06:17:55 PM
rw-r--r--
📄
glob.py
5.92 KB
06/12/2025 06:17:55 PM
rw-r--r--
📄
gui-32.exe
11.5 KB
06/12/2025 06:17:55 PM
rw-r--r--
📄
gui-64.exe
14 KB
06/12/2025 06:17:55 PM
rw-r--r--
📄
gui-arm64.exe
13.5 KB
06/12/2025 06:17:55 PM
rw-r--r--
📄
gui.exe
11.5 KB
06/12/2025 06:17:55 PM
rw-r--r--
📄
installer.py
4.99 KB
06/12/2025 06:17:55 PM
rw-r--r--
📄
launch.py
820 bytes
06/12/2025 06:17:55 PM
rw-r--r--
📄
logging.py
1.23 KB
06/12/2025 06:17:55 PM
rw-r--r--
📄
modified.py
568 bytes
06/12/2025 06:17:55 PM
rw-r--r--
📄
monkey.py
3.63 KB
06/12/2025 06:17:55 PM
rw-r--r--
📄
msvc.py
40.66 KB
06/12/2025 06:17:55 PM
rw-r--r--
📄
namespaces.py
3.1 KB
06/12/2025 06:17:55 PM
rw-r--r--
📄
script (dev).tmpl
218 bytes
06/12/2025 06:17:55 PM
rw-r--r--
📄
script.tmpl
138 bytes
06/12/2025 06:17:55 PM
rw-r--r--
📁
tests
-
06/12/2025 06:18:03 PM
rwxr-xr-x
📄
unicode_utils.py
3.11 KB
06/12/2025 06:17:55 PM
rw-r--r--
📄
version.py
161 bytes
06/12/2025 06:17:55 PM
rw-r--r--
📄
warnings.py
3.71 KB
06/12/2025 06:17:55 PM
rw-r--r--
📄
wheel.py
8.42 KB
06/12/2025 06:17:55 PM
rw-r--r--
📄
windows_support.py
726 bytes
06/12/2025 06:17:55 PM
rw-r--r--
Editing: namespaces.py
Close
import itertools import os from .compat import py312 from distutils import log flatten = itertools.chain.from_iterable class Installer: nspkg_ext = '-nspkg.pth' def install_namespaces(self) -> None: nsp = self._get_all_ns_packages() if not nsp: return filename = self._get_nspkg_file() self.outputs.append(filename) log.info("Installing %s", filename) lines = map(self._gen_nspkg_line, nsp) if self.dry_run: # always generate the lines, even in dry run list(lines) return with open(filename, 'wt', encoding=py312.PTH_ENCODING) as f: # Python<3.13 requires encoding="locale" instead of "utf-8" # See: python/cpython#77102 f.writelines(lines) def uninstall_namespaces(self) -> None: filename = self._get_nspkg_file() if not os.path.exists(filename): return log.info("Removing %s", filename) os.remove(filename) def _get_nspkg_file(self): filename, _ = os.path.splitext(self._get_target()) return filename + self.nspkg_ext def _get_target(self): return self.target _nspkg_tmpl = ( "import sys, types, os", "p = os.path.join(%(root)s, *%(pth)r)", "importlib = __import__('importlib.util')", "__import__('importlib.machinery')", ( "m = " "sys.modules.setdefault(%(pkg)r, " "importlib.util.module_from_spec(" "importlib.machinery.PathFinder.find_spec(%(pkg)r, " "[os.path.dirname(p)])))" ), ("m = m or sys.modules.setdefault(%(pkg)r, types.ModuleType(%(pkg)r))"), "mp = (m or []) and m.__dict__.setdefault('__path__',[])", "(p not in mp) and mp.append(p)", ) "lines for the namespace installer" _nspkg_tmpl_multi = ('m and setattr(sys.modules[%(parent)r], %(child)r, m)',) "additional line(s) when a parent package is indicated" def _get_root(self): return "sys._getframe(1).f_locals['sitedir']" def _gen_nspkg_line(self, pkg): pth = tuple(pkg.split('.')) root = self._get_root() tmpl_lines = self._nspkg_tmpl parent, sep, child = pkg.rpartition('.') if parent: tmpl_lines += self._nspkg_tmpl_multi return ';'.join(tmpl_lines) % locals() + '\n' def _get_all_ns_packages(self): """Return sorted list of all package namespaces""" pkgs = self.distribution.namespace_packages or [] return sorted(set(flatten(map(self._pkg_names, pkgs)))) @staticmethod def _pkg_names(pkg): """ Given a namespace package, yield the components of that package. >>> names = Installer._pkg_names('a.b.c') >>> set(names) == set(['a', 'a.b', 'a.b.c']) True """ parts = pkg.split('.') while parts: yield '.'.join(parts) parts.pop() class DevelopInstaller(Installer): def _get_root(self): return repr(str(self.egg_path)) def _get_target(self): return self.egg_link