effectual 0.5.6__py3-none-any.whl → 0.6.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
effectual/build.py CHANGED
@@ -1,4 +1,3 @@
1
- import importlib
2
1
  import os
3
2
  import shutil
4
3
  import zipfile
@@ -10,8 +9,7 @@ from watch_lite import getHash
10
9
 
11
10
  from .colors import completeColor, fileColor, folderColor, tagColor
12
11
  from .config import dumpHashes, loadConfig, loadToml
13
- from .transformations import minifyToString
14
- from .treeshake import cleanPackages
12
+ from .transformations import minifyFile, minifyToString
15
13
 
16
14
 
17
15
  def bundleFiles(
@@ -20,6 +18,7 @@ def bundleFiles(
20
18
  outputFileName: str = "bundle.pyz",
21
19
  compressionLevel: int = 5,
22
20
  minification: bool = True,
21
+ freshHash: bool = False,
23
22
  ) -> None:
24
23
  """Bundles dependencies and scripts into a single .pyz archive
25
24
 
@@ -29,13 +28,11 @@ def bundleFiles(
29
28
  outputFileName (str): Name of the output bundle
30
29
  compressionLevel (int): Compression level for the bundle from 0-9
31
30
  minification (bool): If the scripts should be minified
31
+ freshHash (bool): Is the pyproject hash different then previously?
32
32
  """
33
33
  outputDirectory.mkdir(parents=True, exist_ok=True)
34
34
  outputPath: Path = outputDirectory / outputFileName
35
35
 
36
- if outputPath.exists():
37
- outputPath.unlink()
38
-
39
36
  with zipfile.ZipFile(
40
37
  outputPath,
41
38
  "w",
@@ -50,8 +47,19 @@ def bundleFiles(
50
47
  if cachedFile.is_dir() and not any(cachedFile.iterdir()):
51
48
  continue
52
49
  totalSize += cachedFile.stat().st_size
53
- arcName = cachedFile.relative_to(cachePath)
54
- bundler.write(cachedFile, arcname=arcName)
50
+ stringCachedFile = str(cachedFile)
51
+ if (
52
+ cachedFile.suffix in (".pyc", ".pyd", ".exe", ".typed")
53
+ or "__pycache__" in stringCachedFile
54
+ or ".dist-info" in stringCachedFile
55
+ or ".lock" in stringCachedFile
56
+ ):
57
+ continue
58
+ else:
59
+ if cachedFile.suffix == ".py" and minification and freshHash:
60
+ minifyFile(cachedFile)
61
+ arcName: str = str(cachedFile.relative_to(cachePath))
62
+ bundler.write(cachedFile, arcname=arcName)
55
63
 
56
64
  print(
57
65
  f"{tagColor('bundling')} || uv dependencies {folderColor(totalSize)}" # noqa: E501
@@ -68,7 +76,8 @@ def bundleFiles(
68
76
  print(f"{tagColor('OUTPUT')} || {outputFileName} {fileColor(outputPath)}")
69
77
 
70
78
 
71
- def dependencies(minify: bool) -> None:
79
+ def dependencies() -> None:
80
+ """Installs relevant dependencies"""
72
81
  packages: list[str] = (
73
82
  loadToml("./pyproject.toml").get("project").get("dependencies")
74
83
  )
@@ -88,13 +97,6 @@ def dependencies(minify: bool) -> None:
88
97
  f'uv pip install "{key}" {argumentString} --target {pathToInstallTo}'
89
98
  )
90
99
 
91
- print(f"{tagColor('optimizing')} || {', '.join(packages)}")
92
-
93
- multiprocessing = importlib.import_module("multiprocessing")
94
-
95
- with multiprocessing.Pool(processes=multiprocessing.cpu_count()) as pool:
96
- pool.map(cleanPackages, Path(pathToInstallTo).rglob("*"))
97
-
98
100
 
99
101
  def main() -> None:
100
102
  """Entrypoint
@@ -128,16 +130,22 @@ def main() -> None:
128
130
  currentHash["hashes"]["pyproject"] = getHash("./pyproject.toml")
129
131
  currentHash["hashes"]["lock"] = getHash("./uv.lock")
130
132
 
133
+ freshHash: bool = False
134
+
131
135
  if uvHashPath.exists():
132
136
  lastHash: dict[str, Any] = loadToml(uvHashPath).get("hashes")
133
137
  if currentHash["hashes"] != lastHash:
134
138
  with open(uvHashPath, "w") as file:
135
139
  dumpHashes(currentHash, file)
136
- dependencies(minify=minification)
140
+ dependencies()
141
+ freshHash = True
142
+ else:
143
+ freshHash = False
137
144
  else:
138
145
  with open(uvHashPath, "x") as file:
139
146
  dumpHashes(currentHash, file)
140
- dependencies(minify=minification)
147
+ dependencies()
148
+ freshHash = True
141
149
 
142
150
  bundleFiles(
143
151
  sourceDirectory,
@@ -145,6 +153,7 @@ def main() -> None:
145
153
  outputFileName,
146
154
  compressionLevel,
147
155
  minification,
156
+ freshHash,
148
157
  )
149
158
  endTime = perf_counter()
150
159
 
effectual/developer.py CHANGED
@@ -48,7 +48,6 @@ def main() -> None:
48
48
  if currentHashSet != lastHashSet:
49
49
  runCommand.kill()
50
50
  runCommand.wait()
51
- outputFile.unlink()
52
51
  lastHashSet = currentHashSet
53
52
  print(f"{tagColor('reloaded')} || file change detected")
54
53
  bundle(sourceDirectory, outputFile)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: effectual
3
- Version: 0.5.6
3
+ Version: 0.6.0
4
4
  Summary: A python package/script bundler
5
5
  Project-URL: Homepage, https://github.com/effectualpy/effectual
6
6
  Author-email: jake <jakewdr@proton.me>
@@ -53,7 +53,7 @@ sourceDirectory = "./src/"
53
53
  outputDirectory = "./dist/"
54
54
  outputFileName = "bundle.pyz"
55
55
  minification = true
56
- compressionLevel=5
56
+ compressionLevel = 5
57
57
  ```
58
58
 
59
59
  Note you must have a \_\_main\_\_.py entrypoint for this to work
@@ -0,0 +1,11 @@
1
+ effectual/__init__.py,sha256=Hg_RSVgpLZvaeBUqt5uL_r5YIDsVdKPcFE2L5WJVYbM,482
2
+ effectual/build.py,sha256=XzpbgcPgb3OKA0dlFfkKu7SRN8Ihj9lrHQ8uT-PWTk8,5895
3
+ effectual/colors.py,sha256=na7SEUSXM7aHvEKeIAn5shrZJtrBYq_ZUp121GRO_PQ,1411
4
+ effectual/config.py,sha256=Z99V7AnJpSWuo-aEz10TDj5BAaT7tboGJUjggj-HQh4,1798
5
+ effectual/developer.py,sha256=ekwlqvrOlX574aTdW0_kobu5f1x2UBspnhFAVitsV1k,2019
6
+ effectual/transformations.py,sha256=7GHgQWzin2J1W62yMReHXaYIChXc3f0rNJA-yY4LDEI,1313
7
+ effectual-0.6.0.dist-info/METADATA,sha256=zsNMMpKCCl4ie9PyV9yXnMXzNHUyp_d44JygXvBc1F0,2589
8
+ effectual-0.6.0.dist-info/WHEEL,sha256=C2FUgwZgiLbznR-k0b_5k3Ai_1aASOXDss3lzCUsUug,87
9
+ effectual-0.6.0.dist-info/entry_points.txt,sha256=1W7EjlLZkw_Wz8V1SgdzzDis-CRE5IINyg74upsB0zU,40
10
+ effectual-0.6.0.dist-info/licenses/LICENSE,sha256=RrVXS_K_FctToNx9BLuZm9vbcpTi3PHNzWMaz7QyVeg,1082
11
+ effectual-0.6.0.dist-info/RECORD,,
effectual/treeshake.py DELETED
@@ -1,19 +0,0 @@
1
- from pathlib import Path
2
-
3
- from transformations import minifyFile
4
-
5
-
6
- def cleanPackages(file: Path) -> None:
7
- stringFile: str = str(file)
8
- if (
9
- file.suffix in (".pyc", ".pyd", ".exe", ".typed")
10
- or "__pycache__" in stringFile
11
- or ".dist-info" in stringFile
12
- or ".lock" in stringFile
13
- ):
14
- try:
15
- file.unlink()
16
- except PermissionError:
17
- pass
18
- elif file.suffix == ".py":
19
- minifyFile(file)
@@ -1,12 +0,0 @@
1
- effectual/__init__.py,sha256=Hg_RSVgpLZvaeBUqt5uL_r5YIDsVdKPcFE2L5WJVYbM,482
2
- effectual/build.py,sha256=c1GyLhIqybBhED8eou8B7GOXwpmeSWvxpv4PBkYgLtQ,5463
3
- effectual/colors.py,sha256=na7SEUSXM7aHvEKeIAn5shrZJtrBYq_ZUp121GRO_PQ,1411
4
- effectual/config.py,sha256=Z99V7AnJpSWuo-aEz10TDj5BAaT7tboGJUjggj-HQh4,1798
5
- effectual/developer.py,sha256=D_KX6YYWgHF5b6ri-48ai1RqxqiIqZ0Rw-dVHG9NLHE,2052
6
- effectual/transformations.py,sha256=7GHgQWzin2J1W62yMReHXaYIChXc3f0rNJA-yY4LDEI,1313
7
- effectual/treeshake.py,sha256=VQCFFbS9DF7824Qwl8oIBTcRMJoyYi5LOdXlAA9vo2g,485
8
- effectual-0.5.6.dist-info/METADATA,sha256=Q-DezI6eEDCfqYpjMFsth5F00JFXHw-u3FkOXpzpcqM,2587
9
- effectual-0.5.6.dist-info/WHEEL,sha256=C2FUgwZgiLbznR-k0b_5k3Ai_1aASOXDss3lzCUsUug,87
10
- effectual-0.5.6.dist-info/entry_points.txt,sha256=1W7EjlLZkw_Wz8V1SgdzzDis-CRE5IINyg74upsB0zU,40
11
- effectual-0.5.6.dist-info/licenses/LICENSE,sha256=RrVXS_K_FctToNx9BLuZm9vbcpTi3PHNzWMaz7QyVeg,1082
12
- effectual-0.5.6.dist-info/RECORD,,