effectual 0.3.5__py3-none-any.whl → 0.4.0__py3-none-any.whl
Sign up to get free protection for your applications and to get access to all the features.
- effectual/build.py +8 -7
- effectual/developer.py +4 -4
- effectual/fileHash.py +9 -7
- {effectual-0.3.5.dist-info → effectual-0.4.0.dist-info}/METADATA +1 -1
- effectual-0.4.0.dist-info/RECORD +12 -0
- effectual-0.3.5.dist-info/RECORD +0 -12
- {effectual-0.3.5.dist-info → effectual-0.4.0.dist-info}/WHEEL +0 -0
- {effectual-0.3.5.dist-info → effectual-0.4.0.dist-info}/entry_points.txt +0 -0
- {effectual-0.3.5.dist-info → effectual-0.4.0.dist-info}/licenses/LICENSE +0 -0
effectual/build.py
CHANGED
@@ -21,14 +21,14 @@ def bundleFiles(
|
|
21
21
|
compressionLevel: int,
|
22
22
|
minification: bool,
|
23
23
|
) -> None:
|
24
|
-
"""Bundles dependencies and scripts into a single .
|
24
|
+
"""Bundles dependencies and scripts into a single .pyz archive
|
25
25
|
|
26
26
|
Args:
|
27
27
|
sourceDirectory (Path): Source directory which must contain a __main__.py script
|
28
28
|
outputDirectory (Path): Output directory for the bundle
|
29
29
|
outputFileName (str): Name of the output bundle
|
30
30
|
compressionLevel (int): Compression level for the bundle from 0-9
|
31
|
-
minification (bool): If the
|
31
|
+
minification (bool): If the scripts should be minified
|
32
32
|
"""
|
33
33
|
outputDirectory.mkdir(parents=True, exist_ok=True)
|
34
34
|
outputPath: Path = outputDirectory / outputFileName
|
@@ -90,11 +90,12 @@ def dependencies(minify: bool) -> None:
|
|
90
90
|
|
91
91
|
|
92
92
|
def optimizeDependencies(file: Path) -> None:
|
93
|
+
stringFile: str = str(file)
|
93
94
|
if (
|
94
95
|
file.suffix in (".pyc", ".pyd", ".exe", ".typed")
|
95
|
-
or "__pycache__" in
|
96
|
-
or ".dist-info" in
|
97
|
-
or ".lock" in
|
96
|
+
or "__pycache__" in stringFile
|
97
|
+
or ".dist-info" in stringFile
|
98
|
+
or ".lock" in stringFile
|
98
99
|
):
|
99
100
|
try:
|
100
101
|
file.unlink()
|
@@ -128,7 +129,7 @@ def main() -> None:
|
|
128
129
|
)
|
129
130
|
|
130
131
|
uvHashPath: Path = Path("./.effectual_cache/pyprojectHash.toml")
|
131
|
-
currentHash: dict[str, dict] = dict()
|
132
|
+
currentHash: dict[str, dict[str, str]] = dict()
|
132
133
|
|
133
134
|
startTime = perf_counter()
|
134
135
|
|
@@ -139,7 +140,7 @@ def main() -> None:
|
|
139
140
|
|
140
141
|
if uvHashPath.exists():
|
141
142
|
with open(uvHashPath, "r") as file:
|
142
|
-
lastHash: dict = dict(rtoml.load(file)).get("hashes")
|
143
|
+
lastHash: dict[Any, Any] = dict(rtoml.load(file)).get("hashes")
|
143
144
|
if currentHash["hashes"] != lastHash:
|
144
145
|
with open(uvHashPath, "w") as file:
|
145
146
|
rtoml.dump(currentHash, file)
|
effectual/developer.py
CHANGED
@@ -40,12 +40,12 @@ def main() -> None:
|
|
40
40
|
|
41
41
|
runCommand = subprocess.Popen(["uv", "run", outputFile], shell=True)
|
42
42
|
|
43
|
-
|
43
|
+
lastHashSet: set[str] = getAllHashes(sourceDirectory, ".py")
|
44
44
|
|
45
45
|
while True:
|
46
|
-
|
47
|
-
if
|
48
|
-
|
46
|
+
currentHashSet: set[str] = getAllHashes(sourceDirectory, ".py")
|
47
|
+
if currentHashSet != lastHashSet:
|
48
|
+
lastHashSet = currentHashSet
|
49
49
|
runCommand.kill()
|
50
50
|
runCommand.wait()
|
51
51
|
outputFile.unlink()
|
effectual/fileHash.py
CHANGED
@@ -7,26 +7,28 @@ def getFilehash(filePath: Path) -> str:
|
|
7
7
|
"""Gets the file hash of a single python script
|
8
8
|
|
9
9
|
Args:
|
10
|
-
filePath (Path): Path to
|
10
|
+
filePath (Path): Path to a file
|
11
11
|
|
12
12
|
Returns:
|
13
|
-
str: Hash of the
|
13
|
+
str: Hash of the file
|
14
14
|
"""
|
15
15
|
with open(filePath, "rb") as file:
|
16
|
-
fileHash = hashlib.
|
16
|
+
fileHash = hashlib.sha1(file.read()).hexdigest()
|
17
17
|
return fileHash
|
18
18
|
|
19
19
|
|
20
|
-
def getAllHashes(sourceDirectory: Path) ->
|
20
|
+
def getAllHashes(sourceDirectory: Path, fileExtension: str) -> set[str]:
|
21
21
|
"""Gets all hashes in directory
|
22
22
|
|
23
23
|
Args:
|
24
|
-
sourceDirectory (Path): Path to
|
24
|
+
sourceDirectory (Path): Path to a folder containing files
|
25
25
|
|
26
26
|
Returns:
|
27
|
-
|
27
|
+
set[str]: Set containing paths and hashes
|
28
28
|
"""
|
29
29
|
|
30
30
|
with Pool() as pool:
|
31
|
-
hashList:
|
31
|
+
hashList: set[str] = set(
|
32
|
+
pool.map(getFilehash, sourceDirectory.glob(f"*.{fileExtension}"))
|
33
|
+
)
|
32
34
|
return hashList
|
@@ -0,0 +1,12 @@
|
|
1
|
+
effectual/__init__.py,sha256=9hA5S-390BtY7m-NojGHioaBJJ8vEM3IXuMvmzWBv0E,407
|
2
|
+
effectual/build.py,sha256=LjPsTegLoxf2Ta3VwOV2LcMITf7ZEdPOuIcAJ0RXq7M,5669
|
3
|
+
effectual/colors.py,sha256=na7SEUSXM7aHvEKeIAn5shrZJtrBYq_ZUp121GRO_PQ,1411
|
4
|
+
effectual/config.py,sha256=otTF0HIBwECrHpXsB-e_rlxDZg5uRwIIoUPC37TZl8Q,1165
|
5
|
+
effectual/developer.py,sha256=-S55Vllozoi-WlJKjD2SXiuLuOuGEHnsmz1I3S5vIUo,2053
|
6
|
+
effectual/fileHash.py,sha256=ftFDY0RY1RF-IQxgbS9HfJp9mzgc3I6Acl69CIKUL2o,848
|
7
|
+
effectual/minifier.py,sha256=7GHgQWzin2J1W62yMReHXaYIChXc3f0rNJA-yY4LDEI,1313
|
8
|
+
effectual-0.4.0.dist-info/METADATA,sha256=heiu95UEveT9SrhVpai8S_fLEToTc56u55kjSqWQTxo,2527
|
9
|
+
effectual-0.4.0.dist-info/WHEEL,sha256=C2FUgwZgiLbznR-k0b_5k3Ai_1aASOXDss3lzCUsUug,87
|
10
|
+
effectual-0.4.0.dist-info/entry_points.txt,sha256=1W7EjlLZkw_Wz8V1SgdzzDis-CRE5IINyg74upsB0zU,40
|
11
|
+
effectual-0.4.0.dist-info/licenses/LICENSE,sha256=RrVXS_K_FctToNx9BLuZm9vbcpTi3PHNzWMaz7QyVeg,1082
|
12
|
+
effectual-0.4.0.dist-info/RECORD,,
|
effectual-0.3.5.dist-info/RECORD
DELETED
@@ -1,12 +0,0 @@
|
|
1
|
-
effectual/__init__.py,sha256=9hA5S-390BtY7m-NojGHioaBJJ8vEM3IXuMvmzWBv0E,407
|
2
|
-
effectual/build.py,sha256=jyLiuQXKl1pjG8gtgQDafqiFQXgGo8DLwVn9kdIzqdw,5629
|
3
|
-
effectual/colors.py,sha256=na7SEUSXM7aHvEKeIAn5shrZJtrBYq_ZUp121GRO_PQ,1411
|
4
|
-
effectual/config.py,sha256=otTF0HIBwECrHpXsB-e_rlxDZg5uRwIIoUPC37TZl8Q,1165
|
5
|
-
effectual/developer.py,sha256=l7olxXwsGbdd5uGkxXMaFabaQo8A8qzrFMCewKuzx9M,2047
|
6
|
-
effectual/fileHash.py,sha256=m2oPjhAcSH0Qc7J7aMkmjOlgDr5Lzilcfl1ppeoDxI8,810
|
7
|
-
effectual/minifier.py,sha256=7GHgQWzin2J1W62yMReHXaYIChXc3f0rNJA-yY4LDEI,1313
|
8
|
-
effectual-0.3.5.dist-info/METADATA,sha256=CtVXhoTgNE7vkUj-Y_yOm9wwporcS_rXE0cw6xIc6yw,2527
|
9
|
-
effectual-0.3.5.dist-info/WHEEL,sha256=C2FUgwZgiLbznR-k0b_5k3Ai_1aASOXDss3lzCUsUug,87
|
10
|
-
effectual-0.3.5.dist-info/entry_points.txt,sha256=1W7EjlLZkw_Wz8V1SgdzzDis-CRE5IINyg74upsB0zU,40
|
11
|
-
effectual-0.3.5.dist-info/licenses/LICENSE,sha256=RrVXS_K_FctToNx9BLuZm9vbcpTi3PHNzWMaz7QyVeg,1082
|
12
|
-
effectual-0.3.5.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|