Skip to content

Commit 01d3ab0

Browse files
authored
Add Python 3.13 to pyk code quality CI job (#4656)
- Fix a few `TypeError`-s - Add Python 3.13 to code quality matrix
1 parent 8bf17a3 commit 01d3ab0

File tree

3 files changed

+113
-121
lines changed

3 files changed

+113
-121
lines changed

.github/workflows/test-pr.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ jobs:
3535
strategy:
3636
fail-fast: false
3737
matrix:
38-
python-version: ['3.10', '3.11', '3.12']
38+
python-version: ['3.10', '3.11', '3.12', '3.13']
3939
defaults:
4040
run:
4141
working-directory: ./pyk

pyk/src/tests/integration/proof/test_imp.py

Lines changed: 89 additions & 93 deletions
Original file line numberDiff line numberDiff line change
@@ -892,31 +892,31 @@ def test_all_path_reachability_prove(
892892
expected_leaf_number: int,
893893
tmp_path_factory: TempPathFactory,
894894
) -> None:
895-
with tmp_path_factory.mktemp(f'apr_tmp_proofs-{test_id}') as proof_dir:
896-
spec_modules = kprove.get_claim_modules(Path(spec_file), spec_module_name=spec_module)
897-
spec_label = f'{spec_module}.{claim_id}'
898-
proofs = APRProof.from_spec_modules(
899-
kprove.definition,
900-
spec_modules,
901-
spec_labels=[spec_label],
902-
logs={},
903-
proof_dir=proof_dir,
904-
)
905-
proof = single([p for p in proofs if p.id == spec_label])
906-
if admit_deps:
907-
for subproof in proof.subproofs:
908-
subproof.admit()
909-
subproof.write_proof_data()
895+
proof_dir = tmp_path_factory.mktemp(f'apr_tmp_proofs-{test_id}')
896+
spec_modules = kprove.get_claim_modules(Path(spec_file), spec_module_name=spec_module)
897+
spec_label = f'{spec_module}.{claim_id}'
898+
proofs = APRProof.from_spec_modules(
899+
kprove.definition,
900+
spec_modules,
901+
spec_labels=[spec_label],
902+
logs={},
903+
proof_dir=proof_dir,
904+
)
905+
proof = single([p for p in proofs if p.id == spec_label])
906+
if admit_deps:
907+
for subproof in proof.subproofs:
908+
subproof.admit()
909+
subproof.write_proof_data()
910910

911-
prover = APRProver(kcfg_explore=kcfg_explore, execute_depth=max_depth, cut_point_rules=cut_rules)
912-
prover.advance_proof(proof, max_iterations=max_iterations)
911+
prover = APRProver(kcfg_explore=kcfg_explore, execute_depth=max_depth, cut_point_rules=cut_rules)
912+
prover.advance_proof(proof, max_iterations=max_iterations)
913913

914-
kcfg_show = KCFGShow(kprove, node_printer=APRProofNodePrinter(proof, kprove, full_printer=True))
915-
cfg_lines = kcfg_show.show(proof.kcfg)
916-
_LOGGER.info('\n'.join(cfg_lines))
914+
kcfg_show = KCFGShow(kprove, node_printer=APRProofNodePrinter(proof, kprove, full_printer=True))
915+
cfg_lines = kcfg_show.show(proof.kcfg)
916+
_LOGGER.info('\n'.join(cfg_lines))
917917

918-
assert proof.status == proof_status
919-
assert leaf_number(proof) == expected_leaf_number
918+
assert proof.status == proof_status
919+
assert leaf_number(proof) == expected_leaf_number
920920

921921
def test_terminal_node_subsumption(
922922
self,
@@ -929,24 +929,24 @@ def test_terminal_node_subsumption(
929929
spec_module: str = 'IMP-SIMPLE-SPEC'
930930
claim_id: str = 'terminal-node-subsumption'
931931
cut_rules: Iterable[str] = []
932-
with tmp_path_factory.mktemp(f'apr_tmp_proofs-{test_id}') as proof_dir:
933-
spec_modules = kprove.get_claim_modules(Path(spec_file), spec_module_name=spec_module)
934-
spec_label = f'{spec_module}.{claim_id}'
935-
proofs = APRProof.from_spec_modules(
936-
kprove.definition,
937-
spec_modules,
938-
spec_labels=[spec_label],
939-
logs={},
940-
proof_dir=proof_dir,
941-
)
942-
proof = single([p for p in proofs if p.id == spec_label])
943-
prover = APRProver(kcfg_explore=kcfg_explore, execute_depth=7, cut_point_rules=cut_rules)
944-
prover.advance_proof(proof, max_iterations=1)
945-
# We have reached a terminal node, but not yet checked subsumption
946-
assert proof.status != ProofStatus.PASSED
947-
# The next advance only checks subsumption
948-
prover.advance_proof(proof, max_iterations=1)
949-
assert proof.status == ProofStatus.PASSED
932+
proof_dir = tmp_path_factory.mktemp(f'apr_tmp_proofs-{test_id}')
933+
spec_modules = kprove.get_claim_modules(Path(spec_file), spec_module_name=spec_module)
934+
spec_label = f'{spec_module}.{claim_id}'
935+
proofs = APRProof.from_spec_modules(
936+
kprove.definition,
937+
spec_modules,
938+
spec_labels=[spec_label],
939+
logs={},
940+
proof_dir=proof_dir,
941+
)
942+
proof = single([p for p in proofs if p.id == spec_label])
943+
prover = APRProver(kcfg_explore=kcfg_explore, execute_depth=7, cut_point_rules=cut_rules)
944+
prover.advance_proof(proof, max_iterations=1)
945+
# We have reached a terminal node, but not yet checked subsumption
946+
assert proof.status != ProofStatus.PASSED
947+
# The next advance only checks subsumption
948+
prover.advance_proof(proof, max_iterations=1)
949+
assert proof.status == ProofStatus.PASSED
950950

951951
@pytest.mark.parametrize(
952952
'test_id,spec_file,spec_module,claim_id,max_iterations,max_depth,terminal_rules,cut_rules,expected_constraint',
@@ -1440,34 +1440,32 @@ def test_all_path_reachability_prove_parallel(
14401440
tmp_path_factory: TempPathFactory,
14411441
create_prover: Callable[[int, Iterable[str]], Prover],
14421442
) -> None:
1443-
with tmp_path_factory.mktemp(f'apr_tmp_proofs-{test_id}') as proof_dir:
1444-
spec_modules = kprove.get_claim_modules(Path(spec_file), spec_module_name=spec_module)
1445-
spec_label = f'{spec_module}.{claim_id}'
1446-
proofs = APRProof.from_spec_modules(
1447-
kprove.definition,
1448-
spec_modules,
1449-
spec_labels=[spec_label],
1450-
logs={},
1451-
proof_dir=proof_dir,
1452-
)
1453-
proof = single([p for p in proofs if p.id == spec_label])
1454-
if admit_deps:
1455-
for subproof in proof.subproofs:
1456-
subproof.admit()
1457-
subproof.write_proof_data()
1443+
proof_dir = tmp_path_factory.mktemp(f'apr_tmp_proofs-{test_id}')
1444+
spec_modules = kprove.get_claim_modules(Path(spec_file), spec_module_name=spec_module)
1445+
spec_label = f'{spec_module}.{claim_id}'
1446+
proofs = APRProof.from_spec_modules(
1447+
kprove.definition,
1448+
spec_modules,
1449+
spec_labels=[spec_label],
1450+
logs={},
1451+
proof_dir=proof_dir,
1452+
)
1453+
proof = single([p for p in proofs if p.id == spec_label])
1454+
if admit_deps:
1455+
for subproof in proof.subproofs:
1456+
subproof.admit()
1457+
subproof.write_proof_data()
14581458

1459-
_create_prover = partial(create_prover, max_depth, cut_rules)
1459+
_create_prover = partial(create_prover, max_depth, cut_rules)
14601460

1461-
parallel_advance_proof(
1462-
proof=proof, max_iterations=max_iterations, create_prover=_create_prover, max_workers=2
1463-
)
1461+
parallel_advance_proof(proof=proof, max_iterations=max_iterations, create_prover=_create_prover, max_workers=2)
14641462

1465-
kcfg_show = KCFGShow(kprove, node_printer=APRProofNodePrinter(proof, kprove, full_printer=True))
1466-
cfg_lines = kcfg_show.show(proof.kcfg)
1467-
_LOGGER.info('\n'.join(cfg_lines))
1463+
kcfg_show = KCFGShow(kprove, node_printer=APRProofNodePrinter(proof, kprove, full_printer=True))
1464+
cfg_lines = kcfg_show.show(proof.kcfg)
1465+
_LOGGER.info('\n'.join(cfg_lines))
14681466

1469-
assert proof.status == proof_status
1470-
assert leaf_number(proof) == expected_leaf_number
1467+
assert proof.status == proof_status
1468+
assert leaf_number(proof) == expected_leaf_number
14711469

14721470
def test_all_path_reachability_prove_parallel_resources(
14731471
self,
@@ -1481,39 +1479,37 @@ def test_all_path_reachability_prove_parallel_resources(
14811479
spec_module = 'IMP-SIMPLE-SPEC'
14821480
claim_id = 'addition-1'
14831481

1484-
with tmp_path_factory.mktemp(f'apr_tmp_proofs-{test_id}') as proof_dir:
1485-
spec_modules = kprove.get_claim_modules(Path(spec_file), spec_module_name=spec_module)
1486-
spec_label = f'{spec_module}.{claim_id}'
1487-
proofs = APRProof.from_spec_modules(
1488-
kprove.definition,
1489-
spec_modules,
1490-
spec_labels=[spec_label],
1491-
logs={},
1492-
proof_dir=proof_dir,
1493-
)
1494-
proof = single([p for p in proofs if p.id == spec_label])
1482+
proof_dir = tmp_path_factory.mktemp(f'apr_tmp_proofs-{test_id}')
1483+
spec_modules = kprove.get_claim_modules(Path(spec_file), spec_module_name=spec_module)
1484+
spec_label = f'{spec_module}.{claim_id}'
1485+
proofs = APRProof.from_spec_modules(
1486+
kprove.definition,
1487+
spec_modules,
1488+
spec_labels=[spec_label],
1489+
logs={},
1490+
proof_dir=proof_dir,
1491+
)
1492+
proof = single([p for p in proofs if p.id == spec_label])
14951493

1496-
_create_prover = partial(create_prover, 1, [])
1494+
_create_prover = partial(create_prover, 1, [])
14971495

1498-
provers_created = 0
1496+
provers_created = 0
14991497

1500-
class MyAPRProver(APRProver):
1501-
provers_closed: int = 0
1498+
class MyAPRProver(APRProver):
1499+
provers_closed: int = 0
15021500

1503-
def close(self) -> None:
1504-
MyAPRProver.provers_closed += 1
1505-
super().close()
1501+
def close(self) -> None:
1502+
MyAPRProver.provers_closed += 1
1503+
super().close()
15061504

1507-
def create_prover_res_counter() -> APRProver:
1508-
nonlocal provers_created
1509-
provers_created += 1
1510-
prover = _create_prover()
1511-
prover.__class__ = MyAPRProver
1512-
assert type(prover) is MyAPRProver
1513-
return prover
1505+
def create_prover_res_counter() -> APRProver:
1506+
nonlocal provers_created
1507+
provers_created += 1
1508+
prover = _create_prover()
1509+
prover.__class__ = MyAPRProver
1510+
assert type(prover) is MyAPRProver
1511+
return prover
15141512

1515-
parallel_advance_proof(
1516-
proof=proof, max_iterations=2, create_prover=create_prover_res_counter, max_workers=2
1517-
)
1513+
parallel_advance_proof(proof=proof, max_iterations=2, create_prover=create_prover_res_counter, max_workers=2)
15181514

1519-
assert provers_created == MyAPRProver.provers_closed
1515+
assert provers_created == MyAPRProver.provers_closed

pyk/src/tests/integration/proof/test_mini_kevm.py

Lines changed: 23 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -76,33 +76,29 @@ def test_all_path_reachability_prove(
7676
expected_leaf_number: int,
7777
tmp_path_factory: TempPathFactory,
7878
) -> None:
79-
with tmp_path_factory.mktemp('apr_tmp_proofs') as proof_dir:
80-
claim = single(
81-
kprove.get_claims(
82-
Path(spec_file), spec_module_name=spec_module, claim_labels=[f'{spec_module}.{claim_id}']
83-
)
84-
)
85-
proof = APRProof.from_claim(kprove.definition, claim, logs={}, proof_dir=proof_dir)
86-
87-
new_init_cterm = kcfg_explore.cterm_symbolic.assume_defined(proof.kcfg.node(proof.init).cterm)
88-
proof.kcfg.let_node(proof.init, cterm=new_init_cterm)
89-
kcfg_explore.simplify(proof.kcfg, {})
90-
91-
prover = APRProver(
92-
kcfg_explore=kcfg_explore,
93-
execute_depth=max_depth,
94-
cut_point_rules=cut_rules,
95-
)
96-
prover.advance_proof(proof, max_iterations=max_iterations)
97-
98-
kcfg_show = KCFGShow(
99-
kprove, node_printer=APRProofNodePrinter(proof, kprove, full_printer=True, minimize=False)
100-
)
101-
cfg_lines = kcfg_show.show(proof.kcfg)
102-
_LOGGER.info('\n'.join(cfg_lines))
103-
104-
assert proof.status == proof_status
105-
assert leaf_number(proof) == expected_leaf_number
79+
proof_dir = tmp_path_factory.mktemp('apr_tmp_proofs')
80+
claim = single(
81+
kprove.get_claims(Path(spec_file), spec_module_name=spec_module, claim_labels=[f'{spec_module}.{claim_id}'])
82+
)
83+
proof = APRProof.from_claim(kprove.definition, claim, logs={}, proof_dir=proof_dir)
84+
85+
new_init_cterm = kcfg_explore.cterm_symbolic.assume_defined(proof.kcfg.node(proof.init).cterm)
86+
proof.kcfg.let_node(proof.init, cterm=new_init_cterm)
87+
kcfg_explore.simplify(proof.kcfg, {})
88+
89+
prover = APRProver(
90+
kcfg_explore=kcfg_explore,
91+
execute_depth=max_depth,
92+
cut_point_rules=cut_rules,
93+
)
94+
prover.advance_proof(proof, max_iterations=max_iterations)
95+
96+
kcfg_show = KCFGShow(kprove, node_printer=APRProofNodePrinter(proof, kprove, full_printer=True, minimize=False))
97+
cfg_lines = kcfg_show.show(proof.kcfg)
98+
_LOGGER.info('\n'.join(cfg_lines))
99+
100+
assert proof.status == proof_status
101+
assert leaf_number(proof) == expected_leaf_number
106102

107103
def test_implication_failure_reason_cell_mismatch(
108104
self,

0 commit comments

Comments
 (0)