from typing import Mapping, Optional, Sequence, Iterator
import requests
# import streamlit as st
import tempfile
import tarfile
import shutil
import importlib
import contextlib
import build
import os
stat_org = os.stat
def stat(x, *args, **kwargs):
xabs = os.path.abspath(x)
res = None
try:
res = stat_org(xabs, *args, **kwargs)
finally:
if "typed" in str(x):
print("STAT", x, xabs, res)
return res
os.stat = stat
# import _distutils_hack
# with _distutils_hack.shim():
# mod = importlib.import_module('distutils.file_util')
# def copy_file( # noqa: C901
# src,
# dst,
# preserve_mode=True,
# preserve_times=True,
# update=False,
# link=None,
# verbose=True,
# dry_run=False,
# ):
# dst = os.path.abspath(dst)
# print(f"!!! Copying {src} to {dst}")
# shutil.copyfile(src, dst)
# print("BLD", os.listdir("/tmp/literalai/literalai-0.1.102/build/lib/literalai"))
# return (dst, 1)
# #return setuptools._distutils.file_util._copy_file(*args, **kwargs)
# mod.copy_file = copy_file
# print("patched")
import os
def link(x):
print("LINK TO", x)
os.link = link
def symlink(x):
print("symlink", x)
os.symlink = symlink
tar = "https://files.pythonhosted.org/packages/13/25/f688131d8620145ade928012d0925e0c1c601e3a853b3be7228ba66d68b7/literalai-0.1.102.tar.gz"
@contextlib.contextmanager
def _handle_backend(self, hook: str) -> Iterator[None]:
yield
build.ProjectBuilder._handle_backend = _handle_backend
# unpack the tar file
# with tempfile.TemporaryDirectory() as temp_dir:
temp_dir = "/tmp/literalai"
srcdir = "/tmp/literalai/literalai-0.1.102"
outdir = "/tmp/literalai/la"
if 1:
with tempfile.NamedTemporaryFile() as temp_file:
temp_file.write(requests.get(tar).content)
temp_file.seek(0)
with tarfile.open(temp_file.name) as tar:
tar.extractall(temp_dir)
print(f"Extracted to {temp_dir}")
def inprocess_runner(
cmd: Sequence[str],
cwd: Optional[str] = None,
extra_environ: Optional[Mapping[str, str]] = None,
) -> None:
print(f"Running {cmd} in {cwd}")
print(f"Extra environ: {extra_environ}")
import runpy
import sys
sys.argv = cmd[1:]
import os
os.environ.update(extra_environ or {})
prev_cwd = os.getcwd()
print("BEFORE", os.getcwd())
if cwd:
print("CHDIR", cwd)
os.chdir(cwd)
# breakpoint()
try:
runpy.run_path(cmd[1], run_name='__main__')
except BaseException as e:
print("ERROR", e)
print("CWD", os.getcwd())
print("BLD", os.listdir("/tmp/literalai/literalai-0.1.102/build/"))
print("BLD", os.listdir("/tmp/literalai/literalai-0.1.102/build/lib/literalai"))
for d1 in os.listdir("/tmp/"):
sub1 = f"/tmp/{d1}/"
print("DIR: ", sub1)
for d2 in os.listdir(sub1):
sub2 = f"/tmp/{d1}/{d2}"
print(" ", sub2)
if not os.path.isfile(sub2):
for d3 in os.listdir(sub2):
sub3 = f"/tmp/{d1}/{d2}/{d3}"
print(" ", sub3)
if not os.path.isfile(sub3):
for d4 in os.listdir(sub3):
sub4 = f"/tmp/{d1}/{d2}/{d3}/{d4}"
print(" ", sub4)
# print("os", os.listdir(srcdir))
# print("os", os.listdir(outdir))
# print("os", os.listdir(srcdir + "/build"))
# print("os", os.listdir(srcdir + "/build/lib/literalai"))
raise
finally:
os.chdir(prev_cwd)
print("done")
runner = inprocess_runner
builder = build.ProjectBuilder(srcdir, runner=runner)
config_settings = {}
builder.build('wheel', outdir, config_settings)
HOME = os.path.expanduser("~")
shutil.copyfile(outdir + "/literalai-0.1.102-py3-none-any.whl", HOME + "/project-files/literalai-0.1.102-py3-none-any.whl")
zipfile = outdir + "/literalai-0.1.102-py3-none-any.whl"
import zipfile as zip
import os
os.makedirs("/tmp/literalai/unzip", exist_ok=True)
os.chdir("/tmp/literalai/unzip")
# extrac all
with zip.ZipFile(zipfile, 'r') as z:
z.extractall()
print("BLD", os.listdir("/tmp/literalai/unzip"))