Py.Cafe

maartenbreddels/

build-wheel-hack

Build Package Interaction

DocsPricing
  • app.py
  • literalai-0.1.102-py3-none-any.whl
  • requirements.txt
app.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
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"))