Skip to content

Commit 0bf03a2

Browse files
committed
fix typing and typecheck
1 parent 5cd898a commit 0bf03a2

File tree

5 files changed

+82
-125
lines changed

5 files changed

+82
-125
lines changed
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
import uuid
2+
3+
import pytest
4+
5+
from scaleway.block.v1 import BlockV1API
6+
from scaleway.instance.v1 import InstanceV1API, VolumeServerTemplate, VolumeVolumeType, BootType
7+
from scaleway_core.client import Client
8+
from vcr_config import scw_vcr
9+
10+
server_name = f"test-sdk-python-{uuid.uuid4().hex[:6]}"
11+
max_retry = 10
12+
interval = 0.01
13+
volume_size = 10000000000
14+
commercial_type = "DEV1-S"
15+
zone = "fr-par-1"
16+
image_id = "c00ae53c-1e29-4087-a384-47f3c5c1cd84"
17+
18+
@pytest.fixture(scope="module")
19+
@scw_vcr.use_cassette
20+
def instance_api():
21+
client = Client.from_config_file_and_env()
22+
api = InstanceV1API(client)
23+
return api, client.default_project_id, zone
24+
25+
@pytest.fixture(scope="module")
26+
@scw_vcr.use_cassette
27+
def block_api():
28+
client = Client.from_config_file_and_env()
29+
api = BlockV1API(client)
30+
return api, client.default_project_id, zone
31+
32+
@scw_vcr.use_cassette
33+
def test_instance_create(instance_api):
34+
api, project_id, zone = instance_api
35+
volumes = {
36+
"0": VolumeServerTemplate(
37+
volume_type=VolumeVolumeType.L_SSD,
38+
size=volume_size,
39+
boot=False,
40+
)
41+
}
42+
instance = api.create_instance(project_id=project_id, zone=zone, name=server_name, dynamic_ip_required=False, volume=volumes, protected=False, boot_type=BootType.LOCAL, image=image_id)
43+
assert instance.name == server_name
44+
assert instance.project_id == project_id
45+
assert instance.zone == zone
46+
assert instance.id is not None
47+

scaleway/scaleway/vpc/v2/tests/test_vpc_sdk.py

Lines changed: 31 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
1+
from typing import Generator
2+
13
import pytest
24

3-
from scaleway.vpc.v2 import VpcV2API
5+
from scaleway.vpc.v2 import VpcV2API, VPC, PrivateNetwork, ListVPCsResponse, ListPrivateNetworksResponse
46
from scaleway_core.api import ScalewayException
57
from scaleway_core.client import Client
68
from scaleway_core.utils import random_name
@@ -13,16 +15,16 @@
1315

1416

1517
@pytest.fixture(scope="module")
16-
@scw_vcr.use_cassette
17-
def vpc_api():
18+
@scw_vcr.use_cassette # type: ignore[misc]
19+
def vpc_api() -> tuple[VpcV2API, str | None, str]:
1820
client = Client.from_config_file_and_env()
1921
api = VpcV2API(client)
2022
return api, client.default_project_id, region
2123

2224

2325
@pytest.fixture(scope="module")
24-
@scw_vcr.use_cassette
25-
def vpc(vpc_api):
26+
@scw_vcr.use_cassette # type: ignore[misc]
27+
def vpc(vpc_api: tuple[VpcV2API, str, str]) -> Generator[VPC, None, None]:
2628
api, project_id, region = vpc_api
2729
vpc = api.create_vpc(
2830
enable_routing=True,
@@ -35,19 +37,19 @@ def vpc(vpc_api):
3537

3638

3739
@pytest.fixture
38-
@scw_vcr.use_cassette
39-
def private_networks_to_cleanup(vpc_api):
40+
@scw_vcr.use_cassette # type: ignore[misc]
41+
def private_networks_to_cleanup(vpc_api: tuple[VpcV2API, str, str]) -> Generator[list[PrivateNetwork], None, None]:
4042
api, _, _ = vpc_api
41-
items = []
43+
items: list[PrivateNetwork] = []
4244
yield items
4345
for pn in items:
4446
api.delete_private_network(private_network_id=pn.id)
4547

4648

47-
@scw_vcr.use_cassette
48-
def test_vpc_delete(vpc_api):
49+
@scw_vcr.use_cassette # type: ignore[misc]
50+
def test_vpc_delete(vpc_api: tuple[VpcV2API, str, str]) -> None:
4951
api, project_id, region = vpc_api
50-
vpc = api.create_vpc(
52+
vpc: VPC = api.create_vpc(
5153
enable_routing=True,
5254
region=region,
5355
project_id=project_id,
@@ -63,19 +65,19 @@ def test_vpc_delete(vpc_api):
6365
api.get_vpc(vpc_id=vpc.id)
6466

6567

66-
@scw_vcr.use_cassette()
67-
def test_vpc_list(vpc_api):
68+
@scw_vcr.use_cassette # type: ignore[misc]
69+
def test_vpc_list(vpc_api: tuple[VpcV2API, str, str]) -> None:
6870
api, _, region = vpc_api
69-
vpcs = api.list_vp_cs(region=region)
71+
vpcs: ListVPCsResponse = api.list_vp_cs(region=region)
7072
assert isinstance(vpcs.vpcs, list)
7173
assert vpcs.total_count >= created_vpc_count
7274

7375

74-
@scw_vcr.use_cassette()
75-
def test_private_network_create(vpc_api, vpc, private_networks_to_cleanup):
76+
@scw_vcr.use_cassette # type: ignore[misc]
77+
def test_private_network_create(vpc_api: tuple[VpcV2API, str, str], vpc: VPC , private_networks_to_cleanup: list[PrivateNetwork]) -> None:
7678
api, project_id, _ = vpc_api
7779
for i in range(created_pn_count):
78-
pn = api.create_private_network(
80+
pn: PrivateNetwork = api.create_private_network(
7981
vpc_id=vpc.id,
8082
default_route_propagation_enabled=True,
8183
project_id=project_id,
@@ -85,32 +87,32 @@ def test_private_network_create(vpc_api, vpc, private_networks_to_cleanup):
8587
assert pn.vpc_id == vpc.id
8688

8789

88-
@scw_vcr.use_cassette()
89-
def test_private_network_list(vpc_api):
90+
@scw_vcr.use_cassette # type: ignore[misc]
91+
def test_private_network_list(vpc_api: tuple[VpcV2API, str, str]) -> None:
9092
api, _, region = vpc_api
91-
networks = api.list_private_networks(region=region)
93+
networks: ListPrivateNetworksResponse = api.list_private_networks(region=region)
9294
assert isinstance(networks.private_networks, list)
9395
assert networks.total_count >= created_pn_count
9496

9597

96-
@scw_vcr.use_cassette()
97-
def test_vpc_get(vpc_api, vpc):
98+
@scw_vcr.use_cassette # type: ignore[misc]
99+
def test_vpc_get(vpc_api: tuple[VpcV2API, str, str], vpc: VPC) -> None:
98100
api, _, region = vpc_api
99-
fetched = api.get_vpc(vpc_id=vpc.id, region=region)
100-
assert fetched is not None
101-
assert fetched.id == vpc.id
101+
fetched_vpc: VPC = api.get_vpc(vpc_id=vpc.id, region=region)
102+
assert fetched_vpc is not None
103+
assert fetched_vpc.id == vpc.id
102104

103105

104-
@scw_vcr.use_cassette()
105-
def test_vpc_update(vpc_api, vpc):
106+
@scw_vcr.use_cassette # type: ignore[misc]
107+
def test_vpc_update(vpc_api: tuple[VpcV2API, str, str], vpc: VPC) -> None:
106108
api, _, _ = vpc_api
107109
updated = api.update_vpc(vpc_id=vpc.id, tags=tags)
108110
assert updated.tags == tags
109111
assert updated.id == vpc.id
110112

111113

112-
@scw_vcr.use_cassette()
113-
def test_vpc_list_all(vpc_api):
114+
@scw_vcr.use_cassette # type: ignore[misc]
115+
def test_vpc_list_all(vpc_api: tuple[VpcV2API, str, str]) -> None:
114116
api, _, _ = vpc_api
115117
vpcs = api.list_vp_cs_all()
116118
assert isinstance(vpcs, list)

scaleway/tests/test_vpc.py

Lines changed: 0 additions & 91 deletions
This file was deleted.

scaleway/vcr_config.py

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,16 @@
1-
import logging
21
import os
3-
from typing import Optional
2+
from pathlib import Path
43

54
import vcr
65
import inspect
76

87
PYTHON_UPDATE_CASSETTE = os.getenv("PYTHON_UPDATE_CASSETTE", "false").lower() in ("1", "true", "yes")
98

109
def func_path(function):
11-
path = os.path.join(os.path.dirname(inspect.getfile(function)), "cassettes")
12-
os.makedirs(path, exist_ok=True)
10+
path = Path(Path(inspect.getfile(function)).parent, "cassettes")
11+
Path.mkdir(path, exist_ok=True)
1312
filename = function.__name__ + ".cassette.yaml"
14-
return os.path.join(path, filename)
13+
return Path(path, filename)
1514

1615
scw_vcr = vcr.VCR(
1716
record_mode="all" if PYTHON_UPDATE_CASSETTE else "none",

0 commit comments

Comments
 (0)