Skip to content

Commit 1da5bc1

Browse files
authored
Merge pull request #141 from skogsbaer/sw/fix-record
fix handling of lazy annotations in records
2 parents 07efd9a + d801d85 commit 1da5bc1

File tree

8 files changed

+70
-0
lines changed

8 files changed

+70
-0
lines changed

python/deps/untypy/untypy/util/typedfunction.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,8 @@ def __init__(self, inner: Callable, ctx: CreationContext):
3737
self.checkers()
3838
except UntypyNameError:
3939
pass
40+
except NameError:
41+
pass
4042

4143
# The self.fast_sig flags tells wether the signature supports fast matching of arguments.
4244
# We identified (2022-05-05) that self.wrap_arguments is a performence bottleneck.

python/fileTests

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -285,6 +285,8 @@ checkWithOutputAux yes 0 test-data/testUnion.py
285285
checkWithOutputAux yes 0 test-data/testUnion2.py
286286
checkWithOutputAux yes 0 test-data/testUnion3.py
287287
checkWithOutputAux yes 1 test-data/testLiteral1.py
288+
checkWithOutputAux yes 0 test-data/testForwardTypeInRecord.py
289+
checkWithOutputAux yes 0 test-data/testForwardTypeInRecord2.py
288290

289291
function is_min_version()
290292
{

python/test-data/testForwardTypeInRecord.err

Whitespace-only changes.
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
3 Tests, alle erfolgreich 😀
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
from wypp import *
2+
3+
type RiverSection = Union[Creek, Confluence]
4+
5+
@record
6+
class Creek:
7+
origin: str
8+
name: str
9+
10+
@record
11+
class Confluence:
12+
location: str
13+
mainStem: RiverSection
14+
tributary: RiverSection
15+
16+
kinzig1 = Creek('Loßburg', 'Kinzig')
17+
gutach1 = Creek('Schönwald', 'Gutach')
18+
kinzig2 = Confluence('Hausach', kinzig1, gutach1)
19+
schutter1 = Creek('Schweighausen', 'Schutter')
20+
heidengraben1 = Creek('Lahr', 'Heidengraben')
21+
schutter2 = Confluence('Lahr', schutter1, heidengraben1)
22+
kinzig3 = Confluence('Kehl', kinzig2, schutter2)
23+
24+
def riverName(section: RiverSection) -> str:
25+
if isinstance(section, Creek): # es handelt sich um einen Bach
26+
return section.name
27+
else: # es handelt sich um einen Zusammenfluss
28+
return riverName(section.mainStem)
29+
30+
check(riverName(kinzig1), 'Kinzig')
31+
check(riverName(kinzig2), 'Kinzig')
32+
check(riverName(kinzig3), 'Kinzig')

python/test-data/testForwardTypeInRecord2.err

Whitespace-only changes.
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
3 Tests, alle erfolgreich 😀
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
from wypp import *
2+
3+
type RiverSection = Union[Creek, Confluence]
4+
5+
@record
6+
class Creek:
7+
origin: str
8+
name: str
9+
10+
@record(mutable=True)
11+
class Confluence:
12+
location: str
13+
mainStem: RiverSection
14+
tributary: RiverSection
15+
16+
kinzig1 = Creek('Loßburg', 'Kinzig')
17+
gutach1 = Creek('Schönwald', 'Gutach')
18+
kinzig2 = Confluence('Hausach', kinzig1, gutach1)
19+
schutter1 = Creek('Schweighausen', 'Schutter')
20+
heidengraben1 = Creek('Lahr', 'Heidengraben')
21+
schutter2 = Confluence('Lahr', schutter1, heidengraben1)
22+
kinzig3 = Confluence('Kehl', kinzig2, schutter2)
23+
24+
def riverName(section: RiverSection) -> str:
25+
if isinstance(section, Creek): # es handelt sich um einen Bach
26+
return section.name
27+
else: # es handelt sich um einen Zusammenfluss
28+
return riverName(section.mainStem)
29+
30+
check(riverName(kinzig1), 'Kinzig')
31+
check(riverName(kinzig2), 'Kinzig')
32+
check(riverName(kinzig3), 'Kinzig')

0 commit comments

Comments
 (0)