Unverified Commit 0a36eac6 authored by josh's avatar josh Committed by GitHub

ref: replace usage of deprecated imp (#449)

* Use types instead of imp.new_module.

I can follow up with https://docs.python.org/3/library/importlib.html#importlib.util.module_from_spec if need be.

* use source loader from importlib

* Revert "use source loader from importlib"

This reverts commit 1f255704f7bf618fb7e0432e1fccef6ee22364d4.

* use inspect.getsource, but alas

* placate linter

* use find_spec to resolve a module spec to a file path

* better function naming

* remove outdated comment
parent 16b46288
import sys import sys
import zlib import zlib
import imp import types
verbosity = verbosity # noqa: F821 must be a previously defined global verbosity = verbosity # noqa: F821 must be a previously defined global
z = zlib.decompressobj() z = zlib.decompressobj()
...@@ -15,7 +15,7 @@ while 1: ...@@ -15,7 +15,7 @@ while 1:
% (name, nbytes)) % (name, nbytes))
content = z.decompress(sys.stdin.read(nbytes)) content = z.decompress(sys.stdin.read(nbytes))
module = imp.new_module(name) module = types.ModuleType(name)
parents = name.rsplit(".", 1) parents = name.rsplit(".", 1)
if len(parents) == 2: if len(parents) == 2:
parent, parent_name = parents parent, parent_name = parents
......
...@@ -3,7 +3,7 @@ import os ...@@ -3,7 +3,7 @@ import os
import re import re
import socket import socket
import zlib import zlib
import imp import importlib
import subprocess as ssubprocess import subprocess as ssubprocess
import shlex import shlex
from shlex import quote from shlex import quote
...@@ -14,43 +14,15 @@ import sshuttle.helpers as helpers ...@@ -14,43 +14,15 @@ import sshuttle.helpers as helpers
from sshuttle.helpers import debug2 from sshuttle.helpers import debug2
def readfile(name): def get_module_source(name):
tokens = name.split(".") spec = importlib.util.find_spec(name)
f = None with open(spec.origin, "rt") as f:
return f.read().encode("utf-8")
token = tokens[0]
token_name = [token]
token_str = ".".join(token_name)
try:
f, pathname, description = imp.find_module(token_str)
for token in tokens[1:]:
module = imp.load_module(token_str, f, pathname, description)
if f is not None:
f.close()
token_name.append(token)
token_str = ".".join(token_name)
f, pathname, description = imp.find_module(
token, module.__path__)
if f is not None:
contents = f.read()
else:
contents = ""
finally:
if f is not None:
f.close()
return contents.encode("UTF8")
def empackage(z, name, data=None): def empackage(z, name, data=None):
if not data: if not data:
data = readfile(name) data = get_module_source(name)
content = z.compress(data) content = z.compress(data)
content += z.flush(zlib.Z_SYNC_FLUSH) content += z.flush(zlib.Z_SYNC_FLUSH)
...@@ -116,7 +88,7 @@ def connect(ssh_cmd, rhostport, python, stderr, options): ...@@ -116,7 +88,7 @@ def connect(ssh_cmd, rhostport, python, stderr, options):
rhost = host rhost = host
z = zlib.compressobj(1) z = zlib.compressobj(1)
content = readfile('sshuttle.assembler') content = get_module_source('sshuttle.assembler')
optdata = ''.join("%s=%r\n" % (k, v) for (k, v) in list(options.items())) optdata = ''.join("%s=%r\n" % (k, v) for (k, v) in list(options.items()))
optdata = optdata.encode("UTF8") optdata = optdata.encode("UTF8")
content2 = (empackage(z, 'sshuttle') + content2 = (empackage(z, 'sshuttle') +
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment