scripts: Reverted del to resolve shadowed builtins

I don't know how I completely missed that this doesn't actually work!

Using del _does_ work in Python's repl, but it makes sense the repl may
differ from actual function execution in this case.

The problem is Python still thinks the relevant builtin is a local
variables after deletion, raising an UnboundLocalError instead of
performing a global lookup. In theory this would work if the variable
could be made global, but since global/nonlocal statements are lifted,
Python complains with "SyntaxError: name 'list' is parameter and
global".

And that's A-Ok! Intentionally shadowing language builtins already puts
this code deep into ugly hacks territory.
This commit is contained in:
Christopher Haster
2025-05-15 14:10:36 -05:00
parent 48c1a016a0
commit 55ea13b994
20 changed files with 70 additions and 36 deletions

View File

@@ -2964,7 +2964,8 @@ class Lfs:
# lookup operations
def lookup(self, mid, mdir=None, *,
all=False):
all_ = all; del all
import builtins
all_, all = all, builtins.all
# is this mid grmed?
if not all_ and self.grmed(mid):
@@ -2985,7 +2986,8 @@ class Lfs:
def namelookup(self, did, name, *,
all=False):
all_ = all; del all
import builtins
all_, all = all, builtins.all
mid_, mdir_, name_ = self.mtree.namelookup(did, name)
if mid_ is None:
@@ -3047,7 +3049,8 @@ class Lfs:
all=False,
path=False,
depth=None):
all_ = all; del all
import builtins
all_, all = all, builtins.all
# default to the root directory
if path_ is None:
@@ -3100,7 +3103,8 @@ class Lfs:
all=False,
path=False,
depth=None):
all_ = all; del all
import builtins
all_, all = all, builtins.all
# default to the root directory
did = did or self.root.did
@@ -3155,7 +3159,8 @@ class Lfs:
def orphans(self,
all=False):
all_ = all; del all
import builtins
all_, all = all, builtins.all
# first find all reachable dids
dids = {self.root.did}