wandelbots-api-client 26.3.0.dev23__py3-none-any.whl → 26.3.0.dev24__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.
- wandelbots_api_client/__init__.py +1 -1
- wandelbots_api_client/api_client.py +1 -1
- wandelbots_api_client/configuration.py +1 -1
- wandelbots_api_client/v2/__init__.py +1 -1
- wandelbots_api_client/v2/api/bus_inputs_outputs_api.py +264 -0
- wandelbots_api_client/v2/api_client.py +1 -1
- wandelbots_api_client/v2/configuration.py +1 -1
- wandelbots_api_client/v2/models/__init__.py +2 -0
- wandelbots_api_client/v2/models/bus_io_profinet.py +21 -1
- wandelbots_api_client/v2/models/bus_io_profinet_slot.py +96 -0
- wandelbots_api_client/v2/models/profinet_io.py +2 -2
- wandelbots_api_client/v2/models/profinet_io_data.py +2 -2
- wandelbots_api_client/v2_pydantic/__init__.py +1 -1
- wandelbots_api_client/v2_pydantic/api/bus_inputs_outputs_api.py +267 -0
- wandelbots_api_client/v2_pydantic/api_client.py +1 -1
- wandelbots_api_client/v2_pydantic/configuration.py +1 -1
- wandelbots_api_client/v2_pydantic/models.py +46 -6
- {wandelbots_api_client-26.3.0.dev23.dist-info → wandelbots_api_client-26.3.0.dev24.dist-info}/METADATA +2 -2
- {wandelbots_api_client-26.3.0.dev23.dist-info → wandelbots_api_client-26.3.0.dev24.dist-info}/RECORD +22 -21
- {wandelbots_api_client-26.3.0.dev23.dist-info → wandelbots_api_client-26.3.0.dev24.dist-info}/WHEEL +0 -0
- {wandelbots_api_client-26.3.0.dev23.dist-info → wandelbots_api_client-26.3.0.dev24.dist-info}/licenses/LICENSE +0 -0
- {wandelbots_api_client-26.3.0.dev23.dist-info → wandelbots_api_client-26.3.0.dev24.dist-info}/top_level.txt +0 -0
|
@@ -91,7 +91,7 @@ class ApiClient:
|
|
|
91
91
|
self.default_headers[header_name] = header_value
|
|
92
92
|
self.cookie = cookie
|
|
93
93
|
# Set default User-Agent.
|
|
94
|
-
self.user_agent = 'Wandelbots-Nova-API-Python-Client/26.3.0.
|
|
94
|
+
self.user_agent = 'Wandelbots-Nova-API-Python-Client/26.3.0.dev24'
|
|
95
95
|
self.client_side_validation = configuration.client_side_validation
|
|
96
96
|
|
|
97
97
|
async def __aenter__(self):
|
|
@@ -511,7 +511,7 @@ class Configuration:
|
|
|
511
511
|
"OS: {env}\n"\
|
|
512
512
|
"Python Version: {pyversion}\n"\
|
|
513
513
|
"Version of the API: 1.3.0\n"\
|
|
514
|
-
"SDK Package Version: 26.3.0.
|
|
514
|
+
"SDK Package Version: 26.3.0.dev24".\
|
|
515
515
|
format(env=sys.platform, pyversion=sys.version)
|
|
516
516
|
|
|
517
517
|
def get_host_settings(self) -> List[HostSetting]:
|
|
@@ -3437,6 +3437,270 @@ class BUSInputsOutputsApi:
|
|
|
3437
3437
|
|
|
3438
3438
|
|
|
3439
3439
|
|
|
3440
|
+
@validate_call
|
|
3441
|
+
async def get_profinet_gsdml(
|
|
3442
|
+
self,
|
|
3443
|
+
cell: Annotated[StrictStr, Field(description="Unique identifier addressing a cell in all API calls. ")],
|
|
3444
|
+
_request_timeout: Union[
|
|
3445
|
+
None,
|
|
3446
|
+
Annotated[StrictFloat, Field(gt=0)],
|
|
3447
|
+
Tuple[
|
|
3448
|
+
Annotated[StrictFloat, Field(gt=0)],
|
|
3449
|
+
Annotated[StrictFloat, Field(gt=0)]
|
|
3450
|
+
]
|
|
3451
|
+
] = None,
|
|
3452
|
+
_request_auth: Optional[Dict[StrictStr, Any]] = None,
|
|
3453
|
+
_content_type: Optional[StrictStr] = None,
|
|
3454
|
+
_headers: Optional[Dict[StrictStr, Any]] = None,
|
|
3455
|
+
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
|
3456
|
+
) -> str:
|
|
3457
|
+
"""Get PROFINET GSDML File
|
|
3458
|
+
|
|
3459
|
+
Returns the Generic Station Description Markup Language (GSDML) file for the PROFINET device. The GSDML file describes the PROFINET device configuration and capabilities, and can be imported into PROFINET engineering tools, e.g., TIA Portal, or other PLC programming environments. The returned GSDML file matches the current slot configuration of the PROFINET device.
|
|
3460
|
+
|
|
3461
|
+
:param cell: Unique identifier addressing a cell in all API calls. (required)
|
|
3462
|
+
:type cell: str
|
|
3463
|
+
:param _request_timeout: timeout setting for this request. If one
|
|
3464
|
+
number provided, it will be total request
|
|
3465
|
+
timeout. It can also be a pair (tuple) of
|
|
3466
|
+
(connection, read) timeouts.
|
|
3467
|
+
:type _request_timeout: int, tuple(int, int), optional
|
|
3468
|
+
:param _request_auth: set to override the auth_settings for an a single
|
|
3469
|
+
request; this effectively ignores the
|
|
3470
|
+
authentication in the spec for a single request.
|
|
3471
|
+
:type _request_auth: dict, optional
|
|
3472
|
+
:param _content_type: force content-type for the request.
|
|
3473
|
+
:type _content_type: str, Optional
|
|
3474
|
+
:param _headers: set to override the headers for a single
|
|
3475
|
+
request; this effectively ignores the headers
|
|
3476
|
+
in the spec for a single request.
|
|
3477
|
+
:type _headers: dict, optional
|
|
3478
|
+
:param _host_index: set to override the host_index for a single
|
|
3479
|
+
request; this effectively ignores the host_index
|
|
3480
|
+
in the spec for a single request.
|
|
3481
|
+
:type _host_index: int, optional
|
|
3482
|
+
:return: Returns the result object.
|
|
3483
|
+
""" # noqa: E501
|
|
3484
|
+
|
|
3485
|
+
_param = self._get_profinet_gsdml_serialize(
|
|
3486
|
+
cell=cell,
|
|
3487
|
+
_request_auth=_request_auth,
|
|
3488
|
+
_content_type=_content_type,
|
|
3489
|
+
_headers=_headers,
|
|
3490
|
+
_host_index=_host_index
|
|
3491
|
+
)
|
|
3492
|
+
|
|
3493
|
+
_response_types_map: Dict[str, Optional[str]] = {
|
|
3494
|
+
'200': "str",
|
|
3495
|
+
'404': "Error",
|
|
3496
|
+
'412': "Error",
|
|
3497
|
+
}
|
|
3498
|
+
response_data = await self.api_client.call_api(
|
|
3499
|
+
*_param,
|
|
3500
|
+
_request_timeout=_request_timeout
|
|
3501
|
+
)
|
|
3502
|
+
await response_data.read()
|
|
3503
|
+
return self.api_client.response_deserialize(
|
|
3504
|
+
response_data=response_data,
|
|
3505
|
+
response_types_map=_response_types_map,
|
|
3506
|
+
).data
|
|
3507
|
+
|
|
3508
|
+
|
|
3509
|
+
@validate_call
|
|
3510
|
+
async def get_profinet_gsdml_with_http_info(
|
|
3511
|
+
self,
|
|
3512
|
+
cell: Annotated[StrictStr, Field(description="Unique identifier addressing a cell in all API calls. ")],
|
|
3513
|
+
_request_timeout: Union[
|
|
3514
|
+
None,
|
|
3515
|
+
Annotated[StrictFloat, Field(gt=0)],
|
|
3516
|
+
Tuple[
|
|
3517
|
+
Annotated[StrictFloat, Field(gt=0)],
|
|
3518
|
+
Annotated[StrictFloat, Field(gt=0)]
|
|
3519
|
+
]
|
|
3520
|
+
] = None,
|
|
3521
|
+
_request_auth: Optional[Dict[StrictStr, Any]] = None,
|
|
3522
|
+
_content_type: Optional[StrictStr] = None,
|
|
3523
|
+
_headers: Optional[Dict[StrictStr, Any]] = None,
|
|
3524
|
+
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
|
3525
|
+
) -> ApiResponse[str]:
|
|
3526
|
+
"""Get PROFINET GSDML File
|
|
3527
|
+
|
|
3528
|
+
Returns the Generic Station Description Markup Language (GSDML) file for the PROFINET device. The GSDML file describes the PROFINET device configuration and capabilities, and can be imported into PROFINET engineering tools, e.g., TIA Portal, or other PLC programming environments. The returned GSDML file matches the current slot configuration of the PROFINET device.
|
|
3529
|
+
|
|
3530
|
+
:param cell: Unique identifier addressing a cell in all API calls. (required)
|
|
3531
|
+
:type cell: str
|
|
3532
|
+
:param _request_timeout: timeout setting for this request. If one
|
|
3533
|
+
number provided, it will be total request
|
|
3534
|
+
timeout. It can also be a pair (tuple) of
|
|
3535
|
+
(connection, read) timeouts.
|
|
3536
|
+
:type _request_timeout: int, tuple(int, int), optional
|
|
3537
|
+
:param _request_auth: set to override the auth_settings for an a single
|
|
3538
|
+
request; this effectively ignores the
|
|
3539
|
+
authentication in the spec for a single request.
|
|
3540
|
+
:type _request_auth: dict, optional
|
|
3541
|
+
:param _content_type: force content-type for the request.
|
|
3542
|
+
:type _content_type: str, Optional
|
|
3543
|
+
:param _headers: set to override the headers for a single
|
|
3544
|
+
request; this effectively ignores the headers
|
|
3545
|
+
in the spec for a single request.
|
|
3546
|
+
:type _headers: dict, optional
|
|
3547
|
+
:param _host_index: set to override the host_index for a single
|
|
3548
|
+
request; this effectively ignores the host_index
|
|
3549
|
+
in the spec for a single request.
|
|
3550
|
+
:type _host_index: int, optional
|
|
3551
|
+
:return: Returns the result object.
|
|
3552
|
+
""" # noqa: E501
|
|
3553
|
+
|
|
3554
|
+
_param = self._get_profinet_gsdml_serialize(
|
|
3555
|
+
cell=cell,
|
|
3556
|
+
_request_auth=_request_auth,
|
|
3557
|
+
_content_type=_content_type,
|
|
3558
|
+
_headers=_headers,
|
|
3559
|
+
_host_index=_host_index
|
|
3560
|
+
)
|
|
3561
|
+
|
|
3562
|
+
_response_types_map: Dict[str, Optional[str]] = {
|
|
3563
|
+
'200': "str",
|
|
3564
|
+
'404': "Error",
|
|
3565
|
+
'412': "Error",
|
|
3566
|
+
}
|
|
3567
|
+
response_data = await self.api_client.call_api(
|
|
3568
|
+
*_param,
|
|
3569
|
+
_request_timeout=_request_timeout
|
|
3570
|
+
)
|
|
3571
|
+
await response_data.read()
|
|
3572
|
+
return self.api_client.response_deserialize(
|
|
3573
|
+
response_data=response_data,
|
|
3574
|
+
response_types_map=_response_types_map,
|
|
3575
|
+
)
|
|
3576
|
+
|
|
3577
|
+
|
|
3578
|
+
@validate_call
|
|
3579
|
+
async def get_profinet_gsdml_without_preload_content(
|
|
3580
|
+
self,
|
|
3581
|
+
cell: Annotated[StrictStr, Field(description="Unique identifier addressing a cell in all API calls. ")],
|
|
3582
|
+
_request_timeout: Union[
|
|
3583
|
+
None,
|
|
3584
|
+
Annotated[StrictFloat, Field(gt=0)],
|
|
3585
|
+
Tuple[
|
|
3586
|
+
Annotated[StrictFloat, Field(gt=0)],
|
|
3587
|
+
Annotated[StrictFloat, Field(gt=0)]
|
|
3588
|
+
]
|
|
3589
|
+
] = None,
|
|
3590
|
+
_request_auth: Optional[Dict[StrictStr, Any]] = None,
|
|
3591
|
+
_content_type: Optional[StrictStr] = None,
|
|
3592
|
+
_headers: Optional[Dict[StrictStr, Any]] = None,
|
|
3593
|
+
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
|
3594
|
+
) -> RESTResponseType:
|
|
3595
|
+
"""Get PROFINET GSDML File
|
|
3596
|
+
|
|
3597
|
+
Returns the Generic Station Description Markup Language (GSDML) file for the PROFINET device. The GSDML file describes the PROFINET device configuration and capabilities, and can be imported into PROFINET engineering tools, e.g., TIA Portal, or other PLC programming environments. The returned GSDML file matches the current slot configuration of the PROFINET device.
|
|
3598
|
+
|
|
3599
|
+
:param cell: Unique identifier addressing a cell in all API calls. (required)
|
|
3600
|
+
:type cell: str
|
|
3601
|
+
:param _request_timeout: timeout setting for this request. If one
|
|
3602
|
+
number provided, it will be total request
|
|
3603
|
+
timeout. It can also be a pair (tuple) of
|
|
3604
|
+
(connection, read) timeouts.
|
|
3605
|
+
:type _request_timeout: int, tuple(int, int), optional
|
|
3606
|
+
:param _request_auth: set to override the auth_settings for an a single
|
|
3607
|
+
request; this effectively ignores the
|
|
3608
|
+
authentication in the spec for a single request.
|
|
3609
|
+
:type _request_auth: dict, optional
|
|
3610
|
+
:param _content_type: force content-type for the request.
|
|
3611
|
+
:type _content_type: str, Optional
|
|
3612
|
+
:param _headers: set to override the headers for a single
|
|
3613
|
+
request; this effectively ignores the headers
|
|
3614
|
+
in the spec for a single request.
|
|
3615
|
+
:type _headers: dict, optional
|
|
3616
|
+
:param _host_index: set to override the host_index for a single
|
|
3617
|
+
request; this effectively ignores the host_index
|
|
3618
|
+
in the spec for a single request.
|
|
3619
|
+
:type _host_index: int, optional
|
|
3620
|
+
:return: Returns the result object.
|
|
3621
|
+
""" # noqa: E501
|
|
3622
|
+
|
|
3623
|
+
_param = self._get_profinet_gsdml_serialize(
|
|
3624
|
+
cell=cell,
|
|
3625
|
+
_request_auth=_request_auth,
|
|
3626
|
+
_content_type=_content_type,
|
|
3627
|
+
_headers=_headers,
|
|
3628
|
+
_host_index=_host_index
|
|
3629
|
+
)
|
|
3630
|
+
|
|
3631
|
+
_response_types_map: Dict[str, Optional[str]] = {
|
|
3632
|
+
'200': "str",
|
|
3633
|
+
'404': "Error",
|
|
3634
|
+
'412': "Error",
|
|
3635
|
+
}
|
|
3636
|
+
response_data = await self.api_client.call_api(
|
|
3637
|
+
*_param,
|
|
3638
|
+
_request_timeout=_request_timeout
|
|
3639
|
+
)
|
|
3640
|
+
return response_data.response
|
|
3641
|
+
|
|
3642
|
+
|
|
3643
|
+
def _get_profinet_gsdml_serialize(
|
|
3644
|
+
self,
|
|
3645
|
+
cell,
|
|
3646
|
+
_request_auth,
|
|
3647
|
+
_content_type,
|
|
3648
|
+
_headers,
|
|
3649
|
+
_host_index,
|
|
3650
|
+
) -> RequestSerialized:
|
|
3651
|
+
|
|
3652
|
+
_host = None
|
|
3653
|
+
|
|
3654
|
+
_collection_formats: Dict[str, str] = {
|
|
3655
|
+
}
|
|
3656
|
+
|
|
3657
|
+
_path_params: Dict[str, str] = {}
|
|
3658
|
+
_query_params: List[Tuple[str, str]] = []
|
|
3659
|
+
_header_params: Dict[str, Optional[str]] = _headers or {}
|
|
3660
|
+
_form_params: List[Tuple[str, str]] = []
|
|
3661
|
+
_files: Dict[str, Union[str, bytes]] = {}
|
|
3662
|
+
_body_params: Optional[bytes] = None
|
|
3663
|
+
|
|
3664
|
+
# process the path parameters
|
|
3665
|
+
if cell is not None:
|
|
3666
|
+
_path_params['cell'] = cell
|
|
3667
|
+
# process the query parameters
|
|
3668
|
+
# process the header parameters
|
|
3669
|
+
# process the form parameters
|
|
3670
|
+
# process the body parameter
|
|
3671
|
+
|
|
3672
|
+
|
|
3673
|
+
# set the HTTP header `Accept`
|
|
3674
|
+
_header_params['Accept'] = self.api_client.select_header_accept(
|
|
3675
|
+
[
|
|
3676
|
+
'application/xml',
|
|
3677
|
+
'application/json'
|
|
3678
|
+
]
|
|
3679
|
+
)
|
|
3680
|
+
|
|
3681
|
+
|
|
3682
|
+
# authentication setting
|
|
3683
|
+
_auth_settings: List[str] = [
|
|
3684
|
+
'BearerAuth'
|
|
3685
|
+
]
|
|
3686
|
+
|
|
3687
|
+
return self.api_client.param_serialize(
|
|
3688
|
+
method='GET',
|
|
3689
|
+
resource_path='/cells/{cell}/bus-ios/profinet/gsdml',
|
|
3690
|
+
path_params=_path_params,
|
|
3691
|
+
query_params=_query_params,
|
|
3692
|
+
header_params=_header_params,
|
|
3693
|
+
body=_body_params,
|
|
3694
|
+
post_params=_form_params,
|
|
3695
|
+
files=_files,
|
|
3696
|
+
auth_settings=_auth_settings,
|
|
3697
|
+
collection_formats=_collection_formats,
|
|
3698
|
+
_host=_host,
|
|
3699
|
+
_request_auth=_request_auth
|
|
3700
|
+
)
|
|
3701
|
+
|
|
3702
|
+
|
|
3703
|
+
|
|
3440
3704
|
@validate_call
|
|
3441
3705
|
async def get_profinet_ios_from_file(
|
|
3442
3706
|
self,
|
|
@@ -91,7 +91,7 @@ class ApiClient:
|
|
|
91
91
|
self.default_headers[header_name] = header_value
|
|
92
92
|
self.cookie = cookie
|
|
93
93
|
# Set default User-Agent.
|
|
94
|
-
self.user_agent = 'Wandelbots-Nova-API-Python-Client/26.3.0.
|
|
94
|
+
self.user_agent = 'Wandelbots-Nova-API-Python-Client/26.3.0.dev24'
|
|
95
95
|
self.client_side_validation = configuration.client_side_validation
|
|
96
96
|
|
|
97
97
|
async def __aenter__(self):
|
|
@@ -511,7 +511,7 @@ class Configuration:
|
|
|
511
511
|
"OS: {env}\n"\
|
|
512
512
|
"Python Version: {pyversion}\n"\
|
|
513
513
|
"Version of the API: 2.3.0 dev\n"\
|
|
514
|
-
"SDK Package Version: 26.3.0.
|
|
514
|
+
"SDK Package Version: 26.3.0.dev24".\
|
|
515
515
|
format(env=sys.platform, pyversion=sys.version)
|
|
516
516
|
|
|
517
517
|
def get_host_settings(self) -> List[HostSetting]:
|
|
@@ -39,6 +39,7 @@ from .bus_io_profinet import BusIOProfinet
|
|
|
39
39
|
from .bus_io_profinet_default_route import BusIOProfinetDefaultRoute
|
|
40
40
|
from .bus_io_profinet_ip_config import BusIOProfinetIpConfig
|
|
41
41
|
from .bus_io_profinet_network import BusIOProfinetNetwork
|
|
42
|
+
from .bus_io_profinet_slot import BusIOProfinetSlot
|
|
42
43
|
from .bus_io_profinet_virtual import BusIOProfinetVirtual
|
|
43
44
|
from .bus_io_type import BusIOType
|
|
44
45
|
from .bus_ios_state import BusIOsState
|
|
@@ -334,6 +335,7 @@ __all__ = [
|
|
|
334
335
|
"BusIOProfinetDefaultRoute",
|
|
335
336
|
"BusIOProfinetIpConfig",
|
|
336
337
|
"BusIOProfinetNetwork",
|
|
338
|
+
"BusIOProfinetSlot",
|
|
337
339
|
"BusIOProfinetVirtual",
|
|
338
340
|
"BusIOType",
|
|
339
341
|
"BusIOsState",
|
|
@@ -19,8 +19,10 @@ import json
|
|
|
19
19
|
|
|
20
20
|
from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator
|
|
21
21
|
from typing import Any, ClassVar, Dict, List, Optional
|
|
22
|
+
from typing_extensions import Annotated
|
|
22
23
|
from wandelbots_api_client.v2.models.bus_io_profinet_default_route import BusIOProfinetDefaultRoute
|
|
23
24
|
from wandelbots_api_client.v2.models.bus_io_profinet_network import BusIOProfinetNetwork
|
|
25
|
+
from wandelbots_api_client.v2.models.bus_io_profinet_slot import BusIOProfinetSlot
|
|
24
26
|
from typing import Optional, Set
|
|
25
27
|
from typing_extensions import Self
|
|
26
28
|
|
|
@@ -32,8 +34,9 @@ class BusIOProfinet(BaseModel):
|
|
|
32
34
|
network_config: Optional[BusIOProfinetNetwork] = Field(default=None, description="Used to enable IP communication through the same physical ethernet interface while PROFINET driver is active. ")
|
|
33
35
|
plc_ip: StrictStr = Field(description="IP address of the PLC to establish PROFINET communication with. The IP address is used to configure the host machine's firewall. The firewall configuration is applied while the BUS input/output service is active. Without proper firewall configuration, PROFINET device discovery, configuration exchanges, and real-time cyclic data communication will fail. ")
|
|
34
36
|
mac: StrictStr = Field(description="MAC address of the physical ethernet interface that you want to use for PROFINET communication. ")
|
|
37
|
+
slots: Optional[Annotated[List[BusIOProfinetSlot], Field(min_length=1)]] = Field(default=None, description="Optional PROFINET slot configuration. If not provided, the default configuration is used for backward compatibility: one slot with a size of 64 bytes. ")
|
|
35
38
|
default_route: Optional[BusIOProfinetDefaultRoute] = None
|
|
36
|
-
__properties: ClassVar[List[str]] = ["bus_type", "network_config", "plc_ip", "mac", "default_route"]
|
|
39
|
+
__properties: ClassVar[List[str]] = ["bus_type", "network_config", "plc_ip", "mac", "slots", "default_route"]
|
|
37
40
|
|
|
38
41
|
@field_validator('bus_type')
|
|
39
42
|
def bus_type_validate_enum(cls, value):
|
|
@@ -88,6 +91,16 @@ class BusIOProfinet(BaseModel):
|
|
|
88
91
|
# override the default output from pydantic by calling `to_dict()` of network_config
|
|
89
92
|
if self.network_config:
|
|
90
93
|
_dict['network_config'] = self.network_config.to_dict()
|
|
94
|
+
# override the default output from pydantic by calling `to_dict()` of each item in slots (list)
|
|
95
|
+
_items = []
|
|
96
|
+
if self.slots:
|
|
97
|
+
for _item in self.slots:
|
|
98
|
+
# >>> Modified from https://github.com/OpenAPITools/openapi-generator/blob/v7.6.0/modules/openapi-generator/src/main/resources/python/model_generic.mustache
|
|
99
|
+
# to not drop empty elements in lists
|
|
100
|
+
if _item is not None:
|
|
101
|
+
_items.append(_item.to_dict())
|
|
102
|
+
# <<< End modification
|
|
103
|
+
_dict['slots'] = _items
|
|
91
104
|
# override the default output from pydantic by calling `to_dict()` of default_route
|
|
92
105
|
if self.default_route:
|
|
93
106
|
_dict['default_route'] = self.default_route.to_dict()
|
|
@@ -107,6 +120,13 @@ class BusIOProfinet(BaseModel):
|
|
|
107
120
|
"network_config": BusIOProfinetNetwork.from_dict(obj["network_config"]) if obj.get("network_config") is not None else None,
|
|
108
121
|
"plc_ip": obj.get("plc_ip"),
|
|
109
122
|
"mac": obj.get("mac"),
|
|
123
|
+
"slots": [
|
|
124
|
+
# >>> Modified from https://github.com/OpenAPITools/openapi-generator/blob/v7.6.0/modules/openapi-generator/src/main/resources/python/model_generic.mustache
|
|
125
|
+
# to allow dicts in lists
|
|
126
|
+
BusIOProfinetSlot.from_dict(_item) if hasattr(BusIOProfinetSlot, 'from_dict') else _item
|
|
127
|
+
# <<< End modification
|
|
128
|
+
for _item in obj["slots"]
|
|
129
|
+
] if obj.get("slots") is not None else None,
|
|
110
130
|
"default_route": BusIOProfinetDefaultRoute.from_dict(obj["default_route"]) if obj.get("default_route") is not None else None
|
|
111
131
|
})
|
|
112
132
|
return _obj
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
# coding: utf-8
|
|
2
|
+
|
|
3
|
+
"""
|
|
4
|
+
Wandelbots NOVA API
|
|
5
|
+
|
|
6
|
+
Interact with robots in an easy and intuitive way.
|
|
7
|
+
|
|
8
|
+
The version of the OpenAPI document: 2.3.0 dev
|
|
9
|
+
Generated by OpenAPI Generator (https://openapi-generator.tech)
|
|
10
|
+
|
|
11
|
+
Do not edit the class manually.
|
|
12
|
+
""" # noqa: E501
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
from __future__ import annotations
|
|
16
|
+
import pprint
|
|
17
|
+
import re # noqa: F401
|
|
18
|
+
import json
|
|
19
|
+
|
|
20
|
+
from pydantic import BaseModel, ConfigDict, Field
|
|
21
|
+
from typing import Any, ClassVar, Dict, List
|
|
22
|
+
from typing_extensions import Annotated
|
|
23
|
+
from typing import Optional, Set
|
|
24
|
+
from typing_extensions import Self
|
|
25
|
+
|
|
26
|
+
class BusIOProfinetSlot(BaseModel):
|
|
27
|
+
"""
|
|
28
|
+
Configuration for one PROFINET process data slot.
|
|
29
|
+
""" # noqa: E501
|
|
30
|
+
slot: Annotated[int, Field(strict=True, ge=1)] = Field(description="Slot identifier on the PROFINET device. ")
|
|
31
|
+
input_size_bytes: Annotated[int, Field(strict=True, ge=0)] = Field(description="Process data size in bytes for the input direction (device → controller). ")
|
|
32
|
+
output_size_bytes: Annotated[int, Field(strict=True, ge=0)] = Field(description="Process data size in bytes for the output direction (controller → device). ")
|
|
33
|
+
__properties: ClassVar[List[str]] = ["slot", "input_size_bytes", "output_size_bytes"]
|
|
34
|
+
|
|
35
|
+
model_config = ConfigDict(
|
|
36
|
+
populate_by_name=True,
|
|
37
|
+
validate_assignment=True,
|
|
38
|
+
protected_namespaces=(),
|
|
39
|
+
)
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
def to_str(self) -> str:
|
|
43
|
+
"""Returns the string representation of the model using alias"""
|
|
44
|
+
return pprint.pformat(self.model_dump(by_alias=True, exclude_none=True))
|
|
45
|
+
|
|
46
|
+
def to_json(self) -> str:
|
|
47
|
+
"""
|
|
48
|
+
Returns the JSON representation of the model using alias
|
|
49
|
+
|
|
50
|
+
Do not use pydantic v2 .model_dump_json(by_alias=True, exclude_unset=True) here!
|
|
51
|
+
It is unable to resolve nested types generated by openapi-generator.
|
|
52
|
+
"""
|
|
53
|
+
return json.dumps(self.to_dict())
|
|
54
|
+
|
|
55
|
+
@classmethod
|
|
56
|
+
def from_json(cls, json_str: str) -> Optional[Self]:
|
|
57
|
+
"""Create an instance of BusIOProfinetSlot from a JSON string"""
|
|
58
|
+
return cls.from_dict(json.loads(json_str))
|
|
59
|
+
|
|
60
|
+
def to_dict(self) -> Dict[str, Any]:
|
|
61
|
+
"""Return the dictionary representation of the model using alias.
|
|
62
|
+
|
|
63
|
+
This has the following differences from calling pydantic's
|
|
64
|
+
`self.model_dump(by_alias=True)`:
|
|
65
|
+
|
|
66
|
+
* `None` is only added to the output dict for nullable fields that
|
|
67
|
+
were set at model initialization. Other fields with value `None`
|
|
68
|
+
are ignored.
|
|
69
|
+
"""
|
|
70
|
+
excluded_fields: Set[str] = set([
|
|
71
|
+
])
|
|
72
|
+
|
|
73
|
+
_dict = self.model_dump(
|
|
74
|
+
by_alias=True,
|
|
75
|
+
exclude=excluded_fields,
|
|
76
|
+
exclude_none=True,
|
|
77
|
+
)
|
|
78
|
+
return _dict
|
|
79
|
+
|
|
80
|
+
@classmethod
|
|
81
|
+
def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
|
|
82
|
+
"""Create an instance of BusIOProfinetSlot from a dict"""
|
|
83
|
+
if obj is None:
|
|
84
|
+
return None
|
|
85
|
+
|
|
86
|
+
if not isinstance(obj, dict):
|
|
87
|
+
return cls.model_validate(obj)
|
|
88
|
+
|
|
89
|
+
_obj = cls.model_validate({
|
|
90
|
+
"slot": obj.get("slot"),
|
|
91
|
+
"input_size_bytes": obj.get("input_size_bytes"),
|
|
92
|
+
"output_size_bytes": obj.get("output_size_bytes")
|
|
93
|
+
})
|
|
94
|
+
return _obj
|
|
95
|
+
|
|
96
|
+
|
|
@@ -32,8 +32,8 @@ class ProfinetIO(BaseModel):
|
|
|
32
32
|
description: StrictStr = Field(description="Descriptive name or note for the input/output variable. ")
|
|
33
33
|
type: ProfinetIOTypeEnum
|
|
34
34
|
direction: ProfinetIODirection = Field(description="The direction of the input/output variable, indicating whether it is an input or output for the PROFINET device, e.g., NOVA's PROFINET service. ")
|
|
35
|
-
byte_address: Annotated[int, Field(le=65535, strict=True, ge=0)] = Field(description="The byte address
|
|
36
|
-
bit_address: Optional[Annotated[int, Field(le=7, strict=True, ge=0)]] = Field(default=None, description="The bit
|
|
35
|
+
byte_address: Annotated[int, Field(le=65535, strict=True, ge=0)] = Field(description="The byte address in the PROFINET device's process image, with offset 0. The slot is automatically determined based on this address and the configured slot layout. For example, with two slots of 64 bytes each: - Bytes 0-63: Slot 1 - Bytes 64-127: Slot 2 When importing from a tag table, e.g., TIA Portal, use `input_offset`/`output_offset` to convert global PLC addresses to device-local addresses: `device_byte_address` = `plc_byte_address` - offset ")
|
|
36
|
+
bit_address: Optional[Annotated[int, Field(le=7, strict=True, ge=0)]] = Field(default=None, description="The bit offset within the byte specified by `byte_address`. Only relevant for boolean/bit-type variables. Valid values are 0-7 (8 bits per byte). For byte/word/dword types, this field is typically omitted or set to 0. ")
|
|
37
37
|
io: StrictStr = Field(description="The unique identifier for the input/output value. This identifier is used to reference the specific input/output variable in the PROFINET device, e.g., NOVA's PROFINET service. ")
|
|
38
38
|
__properties: ClassVar[List[str]] = ["description", "type", "direction", "byte_address", "bit_address", "io"]
|
|
39
39
|
|
|
@@ -32,8 +32,8 @@ class ProfinetIOData(BaseModel):
|
|
|
32
32
|
description: StrictStr = Field(description="Descriptive name or note for the input/output variable. ")
|
|
33
33
|
type: ProfinetIOTypeEnum
|
|
34
34
|
direction: ProfinetIODirection = Field(description="The direction of the input/output variable, indicating whether it is an input or output for the PROFINET device, e.g., NOVA's PROFINET service. ")
|
|
35
|
-
byte_address: Annotated[int, Field(le=65535, strict=True, ge=0)] = Field(description="The byte address
|
|
36
|
-
bit_address: Optional[Annotated[int, Field(le=7, strict=True, ge=0)]] = Field(default=None, description="The bit
|
|
35
|
+
byte_address: Annotated[int, Field(le=65535, strict=True, ge=0)] = Field(description="The byte address in the PROFINET device's process image, with offset 0. The slot is automatically determined based on this address and the configured slot layout. For example, with two slots of 64 bytes each: - Bytes 0-63: Slot 1 - Bytes 64-127: Slot 2 When importing from a tag table, e.g., TIA Portal, use `input_offset`/`output_offset` to convert global PLC addresses to device-local addresses: `device_byte_address` = `plc_byte_address` - offset ")
|
|
36
|
+
bit_address: Optional[Annotated[int, Field(le=7, strict=True, ge=0)]] = Field(default=None, description="The bit offset within the byte specified by `byte_address`. Only relevant for boolean/bit-type variables. Valid values are 0-7 (8 bits per byte). For byte/word/dword types, this field is typically omitted or set to 0. ")
|
|
37
37
|
__properties: ClassVar[List[str]] = ["description", "type", "direction", "byte_address", "bit_address"]
|
|
38
38
|
|
|
39
39
|
model_config = ConfigDict(
|
|
@@ -3473,6 +3473,273 @@ class BUSInputsOutputsApi:
|
|
|
3473
3473
|
|
|
3474
3474
|
|
|
3475
3475
|
|
|
3476
|
+
@validate_call
|
|
3477
|
+
async def get_profinet_gsdml(
|
|
3478
|
+
self,
|
|
3479
|
+
cell: Annotated[StrictStr, Field(description="Unique identifier addressing a cell in all API calls. ")],
|
|
3480
|
+
_request_timeout: Union[
|
|
3481
|
+
None,
|
|
3482
|
+
Annotated[StrictFloat, Field(gt=0)],
|
|
3483
|
+
Tuple[
|
|
3484
|
+
Annotated[StrictFloat, Field(gt=0)],
|
|
3485
|
+
Annotated[StrictFloat, Field(gt=0)]
|
|
3486
|
+
]
|
|
3487
|
+
] = None,
|
|
3488
|
+
_request_auth: Optional[Dict[StrictStr, Any]] = None,
|
|
3489
|
+
_content_type: Optional[StrictStr] = None,
|
|
3490
|
+
_headers: Optional[Dict[StrictStr, Any]] = None,
|
|
3491
|
+
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
|
3492
|
+
) -> str:
|
|
3493
|
+
"""Get PROFINET GSDML File
|
|
3494
|
+
|
|
3495
|
+
Returns the Generic Station Description Markup Language (GSDML) file for the PROFINET device. The GSDML file describes the PROFINET device configuration and capabilities, and can be imported into PROFINET engineering tools, e.g., TIA Portal, or other PLC programming environments. The returned GSDML file matches the current slot configuration of the PROFINET device.
|
|
3496
|
+
|
|
3497
|
+
:param cell: Unique identifier addressing a cell in all API calls. (required)
|
|
3498
|
+
:type cell: str
|
|
3499
|
+
:param _request_timeout: timeout setting for this request. If one
|
|
3500
|
+
number provided, it will be total request
|
|
3501
|
+
timeout. It can also be a pair (tuple) of
|
|
3502
|
+
(connection, read) timeouts.
|
|
3503
|
+
:type _request_timeout: int, tuple(int, int), optional
|
|
3504
|
+
:param _request_auth: set to override the auth_settings for an a single
|
|
3505
|
+
request; this effectively ignores the
|
|
3506
|
+
authentication in the spec for a single request.
|
|
3507
|
+
:type _request_auth: dict, optional
|
|
3508
|
+
:param _content_type: force content-type for the request.
|
|
3509
|
+
:type _content_type: str, Optional
|
|
3510
|
+
:param _headers: set to override the headers for a single
|
|
3511
|
+
request; this effectively ignores the headers
|
|
3512
|
+
in the spec for a single request.
|
|
3513
|
+
:type _headers: dict, optional
|
|
3514
|
+
:param _host_index: set to override the host_index for a single
|
|
3515
|
+
request; this effectively ignores the host_index
|
|
3516
|
+
in the spec for a single request.
|
|
3517
|
+
:type _host_index: int, optional
|
|
3518
|
+
:return: Returns the result object.
|
|
3519
|
+
""" # noqa: E501
|
|
3520
|
+
|
|
3521
|
+
_param = self._get_profinet_gsdml_serialize(
|
|
3522
|
+
cell=cell,
|
|
3523
|
+
_request_auth=_request_auth,
|
|
3524
|
+
_content_type=_content_type,
|
|
3525
|
+
_headers=_headers,
|
|
3526
|
+
_host_index=_host_index
|
|
3527
|
+
)
|
|
3528
|
+
|
|
3529
|
+
_response_types_map: Dict[str, Optional[str]] = {
|
|
3530
|
+
'200': "str",
|
|
3531
|
+
'404': "Error",
|
|
3532
|
+
'412': "Error",
|
|
3533
|
+
}
|
|
3534
|
+
|
|
3535
|
+
response_data = await self.api_client.call_api(
|
|
3536
|
+
*_param,
|
|
3537
|
+
_request_timeout=_request_timeout
|
|
3538
|
+
)
|
|
3539
|
+
await response_data.read()
|
|
3540
|
+
return self.api_client.response_deserialize(
|
|
3541
|
+
response_data=response_data,
|
|
3542
|
+
response_types_map=_response_types_map,
|
|
3543
|
+
).data
|
|
3544
|
+
|
|
3545
|
+
|
|
3546
|
+
@validate_call
|
|
3547
|
+
async def get_profinet_gsdml_with_http_info(
|
|
3548
|
+
self,
|
|
3549
|
+
cell: Annotated[StrictStr, Field(description="Unique identifier addressing a cell in all API calls. ")],
|
|
3550
|
+
_request_timeout: Union[
|
|
3551
|
+
None,
|
|
3552
|
+
Annotated[StrictFloat, Field(gt=0)],
|
|
3553
|
+
Tuple[
|
|
3554
|
+
Annotated[StrictFloat, Field(gt=0)],
|
|
3555
|
+
Annotated[StrictFloat, Field(gt=0)]
|
|
3556
|
+
]
|
|
3557
|
+
] = None,
|
|
3558
|
+
_request_auth: Optional[Dict[StrictStr, Any]] = None,
|
|
3559
|
+
_content_type: Optional[StrictStr] = None,
|
|
3560
|
+
_headers: Optional[Dict[StrictStr, Any]] = None,
|
|
3561
|
+
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
|
3562
|
+
) -> ApiResponse[str]:
|
|
3563
|
+
"""Get PROFINET GSDML File
|
|
3564
|
+
|
|
3565
|
+
Returns the Generic Station Description Markup Language (GSDML) file for the PROFINET device. The GSDML file describes the PROFINET device configuration and capabilities, and can be imported into PROFINET engineering tools, e.g., TIA Portal, or other PLC programming environments. The returned GSDML file matches the current slot configuration of the PROFINET device.
|
|
3566
|
+
|
|
3567
|
+
:param cell: Unique identifier addressing a cell in all API calls. (required)
|
|
3568
|
+
:type cell: str
|
|
3569
|
+
:param _request_timeout: timeout setting for this request. If one
|
|
3570
|
+
number provided, it will be total request
|
|
3571
|
+
timeout. It can also be a pair (tuple) of
|
|
3572
|
+
(connection, read) timeouts.
|
|
3573
|
+
:type _request_timeout: int, tuple(int, int), optional
|
|
3574
|
+
:param _request_auth: set to override the auth_settings for an a single
|
|
3575
|
+
request; this effectively ignores the
|
|
3576
|
+
authentication in the spec for a single request.
|
|
3577
|
+
:type _request_auth: dict, optional
|
|
3578
|
+
:param _content_type: force content-type for the request.
|
|
3579
|
+
:type _content_type: str, Optional
|
|
3580
|
+
:param _headers: set to override the headers for a single
|
|
3581
|
+
request; this effectively ignores the headers
|
|
3582
|
+
in the spec for a single request.
|
|
3583
|
+
:type _headers: dict, optional
|
|
3584
|
+
:param _host_index: set to override the host_index for a single
|
|
3585
|
+
request; this effectively ignores the host_index
|
|
3586
|
+
in the spec for a single request.
|
|
3587
|
+
:type _host_index: int, optional
|
|
3588
|
+
:return: Returns the result object.
|
|
3589
|
+
""" # noqa: E501
|
|
3590
|
+
|
|
3591
|
+
_param = self._get_profinet_gsdml_serialize(
|
|
3592
|
+
cell=cell,
|
|
3593
|
+
_request_auth=_request_auth,
|
|
3594
|
+
_content_type=_content_type,
|
|
3595
|
+
_headers=_headers,
|
|
3596
|
+
_host_index=_host_index
|
|
3597
|
+
)
|
|
3598
|
+
|
|
3599
|
+
_response_types_map: Dict[str, Optional[str]] = {
|
|
3600
|
+
'200': "str",
|
|
3601
|
+
'404': "Error",
|
|
3602
|
+
'412': "Error",
|
|
3603
|
+
}
|
|
3604
|
+
|
|
3605
|
+
response_data = await self.api_client.call_api(
|
|
3606
|
+
*_param,
|
|
3607
|
+
_request_timeout=_request_timeout
|
|
3608
|
+
)
|
|
3609
|
+
await response_data.read()
|
|
3610
|
+
return self.api_client.response_deserialize(
|
|
3611
|
+
response_data=response_data,
|
|
3612
|
+
response_types_map=_response_types_map,
|
|
3613
|
+
)
|
|
3614
|
+
|
|
3615
|
+
|
|
3616
|
+
@validate_call
|
|
3617
|
+
async def get_profinet_gsdml_without_preload_content(
|
|
3618
|
+
self,
|
|
3619
|
+
cell: Annotated[StrictStr, Field(description="Unique identifier addressing a cell in all API calls. ")],
|
|
3620
|
+
_request_timeout: Union[
|
|
3621
|
+
None,
|
|
3622
|
+
Annotated[StrictFloat, Field(gt=0)],
|
|
3623
|
+
Tuple[
|
|
3624
|
+
Annotated[StrictFloat, Field(gt=0)],
|
|
3625
|
+
Annotated[StrictFloat, Field(gt=0)]
|
|
3626
|
+
]
|
|
3627
|
+
] = None,
|
|
3628
|
+
_request_auth: Optional[Dict[StrictStr, Any]] = None,
|
|
3629
|
+
_content_type: Optional[StrictStr] = None,
|
|
3630
|
+
_headers: Optional[Dict[StrictStr, Any]] = None,
|
|
3631
|
+
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
|
3632
|
+
) -> RESTResponseType:
|
|
3633
|
+
"""Get PROFINET GSDML File
|
|
3634
|
+
|
|
3635
|
+
Returns the Generic Station Description Markup Language (GSDML) file for the PROFINET device. The GSDML file describes the PROFINET device configuration and capabilities, and can be imported into PROFINET engineering tools, e.g., TIA Portal, or other PLC programming environments. The returned GSDML file matches the current slot configuration of the PROFINET device.
|
|
3636
|
+
|
|
3637
|
+
:param cell: Unique identifier addressing a cell in all API calls. (required)
|
|
3638
|
+
:type cell: str
|
|
3639
|
+
:param _request_timeout: timeout setting for this request. If one
|
|
3640
|
+
number provided, it will be total request
|
|
3641
|
+
timeout. It can also be a pair (tuple) of
|
|
3642
|
+
(connection, read) timeouts.
|
|
3643
|
+
:type _request_timeout: int, tuple(int, int), optional
|
|
3644
|
+
:param _request_auth: set to override the auth_settings for an a single
|
|
3645
|
+
request; this effectively ignores the
|
|
3646
|
+
authentication in the spec for a single request.
|
|
3647
|
+
:type _request_auth: dict, optional
|
|
3648
|
+
:param _content_type: force content-type for the request.
|
|
3649
|
+
:type _content_type: str, Optional
|
|
3650
|
+
:param _headers: set to override the headers for a single
|
|
3651
|
+
request; this effectively ignores the headers
|
|
3652
|
+
in the spec for a single request.
|
|
3653
|
+
:type _headers: dict, optional
|
|
3654
|
+
:param _host_index: set to override the host_index for a single
|
|
3655
|
+
request; this effectively ignores the host_index
|
|
3656
|
+
in the spec for a single request.
|
|
3657
|
+
:type _host_index: int, optional
|
|
3658
|
+
:return: Returns the result object.
|
|
3659
|
+
""" # noqa: E501
|
|
3660
|
+
|
|
3661
|
+
_param = self._get_profinet_gsdml_serialize(
|
|
3662
|
+
cell=cell,
|
|
3663
|
+
_request_auth=_request_auth,
|
|
3664
|
+
_content_type=_content_type,
|
|
3665
|
+
_headers=_headers,
|
|
3666
|
+
_host_index=_host_index
|
|
3667
|
+
)
|
|
3668
|
+
|
|
3669
|
+
_response_types_map: Dict[str, Optional[str]] = {
|
|
3670
|
+
'200': "str",
|
|
3671
|
+
'404': "Error",
|
|
3672
|
+
'412': "Error",
|
|
3673
|
+
}
|
|
3674
|
+
|
|
3675
|
+
response_data = await self.api_client.call_api(
|
|
3676
|
+
*_param,
|
|
3677
|
+
_request_timeout=_request_timeout
|
|
3678
|
+
)
|
|
3679
|
+
return response_data.response
|
|
3680
|
+
|
|
3681
|
+
|
|
3682
|
+
def _get_profinet_gsdml_serialize(
|
|
3683
|
+
self,
|
|
3684
|
+
cell,
|
|
3685
|
+
_request_auth,
|
|
3686
|
+
_content_type,
|
|
3687
|
+
_headers,
|
|
3688
|
+
_host_index,
|
|
3689
|
+
) -> RequestSerialized:
|
|
3690
|
+
|
|
3691
|
+
_host = None
|
|
3692
|
+
|
|
3693
|
+
_collection_formats: Dict[str, str] = {
|
|
3694
|
+
}
|
|
3695
|
+
|
|
3696
|
+
_path_params: Dict[str, str] = {}
|
|
3697
|
+
_query_params: List[Tuple[str, str]] = []
|
|
3698
|
+
_header_params: Dict[str, Optional[str]] = _headers or {}
|
|
3699
|
+
_form_params: List[Tuple[str, str]] = []
|
|
3700
|
+
_files: Dict[str, Union[str, bytes]] = {}
|
|
3701
|
+
_body_params: Optional[bytes] = None
|
|
3702
|
+
|
|
3703
|
+
# process the path parameters
|
|
3704
|
+
if cell is not None:
|
|
3705
|
+
_path_params['cell'] = cell
|
|
3706
|
+
# process the query parameters
|
|
3707
|
+
# process the header parameters
|
|
3708
|
+
# process the form parameters
|
|
3709
|
+
# process the body parameter
|
|
3710
|
+
|
|
3711
|
+
|
|
3712
|
+
# set the HTTP header `Accept`
|
|
3713
|
+
_header_params['Accept'] = self.api_client.select_header_accept(
|
|
3714
|
+
[
|
|
3715
|
+
'application/xml',
|
|
3716
|
+
'application/json'
|
|
3717
|
+
]
|
|
3718
|
+
)
|
|
3719
|
+
|
|
3720
|
+
|
|
3721
|
+
# authentication setting
|
|
3722
|
+
_auth_settings: List[str] = [
|
|
3723
|
+
'BearerAuth'
|
|
3724
|
+
]
|
|
3725
|
+
|
|
3726
|
+
return self.api_client.param_serialize(
|
|
3727
|
+
method='GET',
|
|
3728
|
+
resource_path='/cells/{cell}/bus-ios/profinet/gsdml',
|
|
3729
|
+
path_params=_path_params,
|
|
3730
|
+
query_params=_query_params,
|
|
3731
|
+
header_params=_header_params,
|
|
3732
|
+
body=_body_params,
|
|
3733
|
+
post_params=_form_params,
|
|
3734
|
+
files=_files,
|
|
3735
|
+
auth_settings=_auth_settings,
|
|
3736
|
+
collection_formats=_collection_formats,
|
|
3737
|
+
_host=_host,
|
|
3738
|
+
_request_auth=_request_auth
|
|
3739
|
+
)
|
|
3740
|
+
|
|
3741
|
+
|
|
3742
|
+
|
|
3476
3743
|
@validate_call
|
|
3477
3744
|
async def get_profinet_ios_from_file(
|
|
3478
3745
|
self,
|
|
@@ -91,7 +91,7 @@ class ApiClient:
|
|
|
91
91
|
self.default_headers[header_name] = header_value
|
|
92
92
|
self.cookie = cookie
|
|
93
93
|
# Set default User-Agent.
|
|
94
|
-
self.user_agent = 'Wandelbots-Nova-API-Python-Client/26.3.0.
|
|
94
|
+
self.user_agent = 'Wandelbots-Nova-API-Python-Client/26.3.0.dev24'
|
|
95
95
|
self.client_side_validation = configuration.client_side_validation
|
|
96
96
|
|
|
97
97
|
async def __aenter__(self):
|
|
@@ -511,7 +511,7 @@ class Configuration:
|
|
|
511
511
|
"OS: {env}\n"\
|
|
512
512
|
"Python Version: {pyversion}\n"\
|
|
513
513
|
"Version of the API: 2.3.0 dev\n"\
|
|
514
|
-
"SDK Package Version: 26.3.0.
|
|
514
|
+
"SDK Package Version: 26.3.0.dev24".\
|
|
515
515
|
format(env=sys.platform, pyversion=sys.version)
|
|
516
516
|
|
|
517
517
|
def get_host_settings(self) -> List[HostSetting]:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# generated by datamodel-codegen:
|
|
2
2
|
# filename: public.openapi.yaml
|
|
3
|
-
# timestamp: 2026-03-
|
|
3
|
+
# timestamp: 2026-03-14T07:11:40+00:00
|
|
4
4
|
|
|
5
5
|
from __future__ import annotations
|
|
6
6
|
|
|
@@ -593,6 +593,29 @@ class BusIOProfinetNetwork(BaseModel):
|
|
|
593
593
|
"""
|
|
594
594
|
|
|
595
595
|
|
|
596
|
+
class BusIOProfinetSlot(BaseModel):
|
|
597
|
+
"""
|
|
598
|
+
Configuration for one PROFINET process data slot.
|
|
599
|
+
|
|
600
|
+
"""
|
|
601
|
+
|
|
602
|
+
slot: Annotated[int, Field(examples=[1], ge=1)]
|
|
603
|
+
"""
|
|
604
|
+
Slot identifier on the PROFINET device.
|
|
605
|
+
|
|
606
|
+
"""
|
|
607
|
+
input_size_bytes: Annotated[int, Field(examples=[64], ge=0)]
|
|
608
|
+
"""
|
|
609
|
+
Process data size in bytes for the input direction (device → controller).
|
|
610
|
+
|
|
611
|
+
"""
|
|
612
|
+
output_size_bytes: Annotated[int, Field(examples=[64], ge=0)]
|
|
613
|
+
"""
|
|
614
|
+
Process data size in bytes for the output direction (controller → device).
|
|
615
|
+
|
|
616
|
+
"""
|
|
617
|
+
|
|
618
|
+
|
|
596
619
|
class BusIOProfinetDefaultRoute(BaseModel):
|
|
597
620
|
"""
|
|
598
621
|
Current default route configuration of your NOVA instance.
|
|
@@ -638,6 +661,14 @@ class BusIOProfinet(BaseModel):
|
|
|
638
661
|
"""
|
|
639
662
|
MAC address of the physical ethernet interface that you want to use for PROFINET communication.
|
|
640
663
|
|
|
664
|
+
"""
|
|
665
|
+
slots: Annotated[list[BusIOProfinetSlot] | None, Field(min_length=1)] = None
|
|
666
|
+
"""
|
|
667
|
+
Optional PROFINET slot configuration.
|
|
668
|
+
|
|
669
|
+
If not provided, the default configuration is used for backward compatibility:
|
|
670
|
+
one slot with a size of 64 bytes.
|
|
671
|
+
|
|
641
672
|
"""
|
|
642
673
|
default_route: Annotated[
|
|
643
674
|
BusIOProfinetDefaultRoute | None, Field(deprecated=True)
|
|
@@ -4953,16 +4984,25 @@ class ProfinetIOData(BaseModel):
|
|
|
4953
4984
|
The direction of the input/output variable, indicating whether it is an input or output for the PROFINET device, e.g., NOVA's PROFINET service.
|
|
4954
4985
|
|
|
4955
4986
|
"""
|
|
4956
|
-
byte_address: Annotated[int, Field(ge=0, le=65535)]
|
|
4987
|
+
byte_address: Annotated[int, Field(examples=[68], ge=0, le=65535)]
|
|
4957
4988
|
"""
|
|
4958
|
-
The byte address
|
|
4959
|
-
The
|
|
4989
|
+
The byte address in the PROFINET device's process image, with offset 0.
|
|
4990
|
+
The slot is automatically determined based on this address and the configured slot layout.
|
|
4991
|
+
|
|
4992
|
+
For example, with two slots of 64 bytes each:
|
|
4993
|
+
- Bytes 0-63: Slot 1
|
|
4994
|
+
- Bytes 64-127: Slot 2
|
|
4995
|
+
|
|
4996
|
+
When importing from a tag table, e.g., TIA Portal, use `input_offset`/`output_offset`
|
|
4997
|
+
to convert global PLC addresses to device-local addresses:
|
|
4998
|
+
`device_byte_address` = `plc_byte_address` - offset
|
|
4960
4999
|
|
|
4961
5000
|
"""
|
|
4962
5001
|
bit_address: Annotated[int | None, Field(ge=0, le=7)] = None
|
|
4963
5002
|
"""
|
|
4964
|
-
The bit
|
|
4965
|
-
|
|
5003
|
+
The bit offset within the byte specified by `byte_address`.
|
|
5004
|
+
Only relevant for boolean/bit-type variables. Valid values are 0-7 (8 bits per byte).
|
|
5005
|
+
For byte/word/dword types, this field is typically omitted or set to 0.
|
|
4966
5006
|
|
|
4967
5007
|
"""
|
|
4968
5008
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: wandelbots_api_client
|
|
3
|
-
Version: 26.3.0.
|
|
3
|
+
Version: 26.3.0.dev24
|
|
4
4
|
Summary: Wandelbots Python Client: Interact with robots in an easy and intuitive way.
|
|
5
5
|
Home-page:
|
|
6
6
|
Author: Copyright (c) 2025 Wandelbots GmbH
|
|
@@ -41,7 +41,7 @@ Dynamic: license-file
|
|
|
41
41
|
Interact with robots in an easy and intuitive way.
|
|
42
42
|
|
|
43
43
|
- Compatible API version: 1.3.0 (can be found at the home screen of your instance -> API)
|
|
44
|
-
- Package version: 26.3.0.
|
|
44
|
+
- Package version: 26.3.0.dev24
|
|
45
45
|
|
|
46
46
|
## Requirements.
|
|
47
47
|
Python >=3.11, Python < 4.0
|
{wandelbots_api_client-26.3.0.dev23.dist-info → wandelbots_api_client-26.3.0.dev24.dist-info}/RECORD
RENAMED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
wandelbots_api_client/__init__.py,sha256=
|
|
2
|
-
wandelbots_api_client/api_client.py,sha256=
|
|
1
|
+
wandelbots_api_client/__init__.py,sha256=X6eOUK993kQ-9RRUhAghcmtYeoSWP81FPXZMEtC-T5s,1022
|
|
2
|
+
wandelbots_api_client/api_client.py,sha256=1dEiU3aIEO_XXrWIsjmFvRF2PWld65EjYrJ8g0GcZHU,27912
|
|
3
3
|
wandelbots_api_client/api_response.py,sha256=eMxw1mpmJcoGZ3gs9z6jM4oYoZ10Gjk333s9sKxGv7s,652
|
|
4
4
|
wandelbots_api_client/authorization.py,sha256=1ZKTpDU3t-7clI0hOqijkg-4Em0hKAbLQL6dyGO_r9w,7928
|
|
5
|
-
wandelbots_api_client/configuration.py,sha256
|
|
5
|
+
wandelbots_api_client/configuration.py,sha256=-jngP-mtt-hqxAegThBdgR7s1Nr-OGPEGF1PmfClVVQ,18169
|
|
6
6
|
wandelbots_api_client/exceptions.py,sha256=m6jyxQAUv-S4sK3DBs-FWzUjCTidqJMbAvR_bABj6us,6428
|
|
7
7
|
wandelbots_api_client/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
8
8
|
wandelbots_api_client/rest.py,sha256=5iQwBRGI0GwgTHUM9X5OWiXtSFLd9gWEUb1QXpK2ECE,7256
|
|
@@ -327,16 +327,16 @@ wandelbots_api_client/models/virtual_controller.py,sha256=lvuYnmpK_2B3wjrgJ49Qrj
|
|
|
327
327
|
wandelbots_api_client/models/virtual_controller_types.py,sha256=IIcNSonSxyah0DlHiiW_bSol1P5m5wSY5_DTvU2nj0w,6571
|
|
328
328
|
wandelbots_api_client/models/virtual_robot_configuration.py,sha256=YkWHoCzU4fmxNcJ-62gd-ZA3tiJH6KAXoy3Cg66EZ7U,2967
|
|
329
329
|
wandelbots_api_client/models/yaskawa_controller.py,sha256=IsfWVcsqJ-bsbpfzhyInbcHq2oJ0-s9UQ3y2ADkzQd4,3188
|
|
330
|
-
wandelbots_api_client/v2/__init__.py,sha256=
|
|
331
|
-
wandelbots_api_client/v2/api_client.py,sha256=
|
|
330
|
+
wandelbots_api_client/v2/__init__.py,sha256=SD0BM85DaSEagOxx2f17a5Xu_YhL_OWKiVOFMvTN-MA,1026
|
|
331
|
+
wandelbots_api_client/v2/api_client.py,sha256=x0SPq8PlUAjaulDXxqagM7VGOmK_lXDZSpxSThr1XiQ,27934
|
|
332
332
|
wandelbots_api_client/v2/api_response.py,sha256=eMxw1mpmJcoGZ3gs9z6jM4oYoZ10Gjk333s9sKxGv7s,652
|
|
333
|
-
wandelbots_api_client/v2/configuration.py,sha256=
|
|
333
|
+
wandelbots_api_client/v2/configuration.py,sha256=TxN39uoF9erptCmEH-iu88ltRUfy4kWbiInYi-TkGH0,18180
|
|
334
334
|
wandelbots_api_client/v2/exceptions.py,sha256=Drsd9QsxdUX9okRXcWiYlF5itY9_7_OgNrKhPkBYMws,6432
|
|
335
335
|
wandelbots_api_client/v2/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
336
336
|
wandelbots_api_client/v2/rest.py,sha256=C4MNGHsRDniMosrRBG6RgbRwqrRXcKomt8cg8mkozvI,7263
|
|
337
337
|
wandelbots_api_client/v2/api/__init__.py,sha256=Dkor2myY6ojJ5mtosKN8EyNlrg3dUlYBzS7NGpNK4Qo,1934
|
|
338
338
|
wandelbots_api_client/v2/api/application_api.py,sha256=--yWGJegIMC1xD9tW4zedScXFAwP5IF69v8NuieZoJA,70959
|
|
339
|
-
wandelbots_api_client/v2/api/bus_inputs_outputs_api.py,sha256=
|
|
339
|
+
wandelbots_api_client/v2/api/bus_inputs_outputs_api.py,sha256=o8yfa2wwJydH5JvpBpPasMoKnb0SPzeswrXi4xL2ol4,226201
|
|
340
340
|
wandelbots_api_client/v2/api/cell_api.py,sha256=QhMNpuLNJzFNMvZsDRacxnRb7cQaaj9HBdPQQA0E1es,100698
|
|
341
341
|
wandelbots_api_client/v2/api/controller_api.py,sha256=T_2B-w0_rH5TAB9VzW9e1Odwt87SEE3oe5WUf_LJP4E,164255
|
|
342
342
|
wandelbots_api_client/v2/api/controller_inputs_outputs_api.py,sha256=YEHPAzc6ZCSDIb1j4_2XgCib1H0NJD5YgCtqXGu8Pr0,62153
|
|
@@ -359,7 +359,7 @@ wandelbots_api_client/v2/api/version_api.py,sha256=a8MMeRy380agPsnlxjLOWjjicYrwz
|
|
|
359
359
|
wandelbots_api_client/v2/api/virtual_controller_api.py,sha256=I5xVrfycRymcmteylHAJAM_XRzte9gYD-ziFLsA-XXY,237788
|
|
360
360
|
wandelbots_api_client/v2/api/virtual_controller_behavior_api.py,sha256=EiQBMZTLpoCcB3nalYopqYDaTJLFrZfFp3wRzi4Uw-Y,42162
|
|
361
361
|
wandelbots_api_client/v2/api/virtual_controller_inputs_outputs_api.py,sha256=ROtwVeDw_bnMKrLGFg7-zDoO32wMJhwgyRDh5PGoDv4,42407
|
|
362
|
-
wandelbots_api_client/v2/models/__init__.py,sha256=
|
|
362
|
+
wandelbots_api_client/v2/models/__init__.py,sha256=3QiUyFtyBehBmO8lyrkHE6DKvJj2T0Av7PHuMFa7CfE,25503
|
|
363
363
|
wandelbots_api_client/v2/models/abb_controller.py,sha256=rxs_559J9gXBvJUNbdI8y9Bk-2p--xn6vnUlBB6Vvoo,3860
|
|
364
364
|
wandelbots_api_client/v2/models/abb_controller_egm_server.py,sha256=topD0qfsgi6WXY9yWHXfyH_bPeYmpMvY5LXzyRQQnJ4,2776
|
|
365
365
|
wandelbots_api_client/v2/models/activate_license_request.py,sha256=9DIJcpzpMM1XoDr8hM3Et8_OVwfkNGd8oY5IdXUReNY,2693
|
|
@@ -382,10 +382,11 @@ wandelbots_api_client/v2/models/bus_io_modbus_server.py,sha256=_wgcrqicj_I9iH5qa
|
|
|
382
382
|
wandelbots_api_client/v2/models/bus_io_modbus_tcp_client.py,sha256=H_fCze7SfgOFUMP7-uGK0CAwGTjbziF_AoND9cNNTn4,3325
|
|
383
383
|
wandelbots_api_client/v2/models/bus_io_modbus_tcp_server.py,sha256=QH2XK7eCTFkqYCxZEAe4U7xnWJ1bsG_eib9y9de-r7k,3178
|
|
384
384
|
wandelbots_api_client/v2/models/bus_io_modbus_virtual.py,sha256=RycHF5A_23VSsj1E4uBsL_JZOYcwC8NeKV4b0voTshc,2908
|
|
385
|
-
wandelbots_api_client/v2/models/bus_io_profinet.py,sha256=
|
|
385
|
+
wandelbots_api_client/v2/models/bus_io_profinet.py,sha256=YpNq0vOag79aYfV1booni3Clx4IaMpElBfy4DwCizlQ,6133
|
|
386
386
|
wandelbots_api_client/v2/models/bus_io_profinet_default_route.py,sha256=bdexfTo5QZiRcRffe44MSLQKyo6earfQv4rmPwsVroY,3210
|
|
387
387
|
wandelbots_api_client/v2/models/bus_io_profinet_ip_config.py,sha256=VI53XatLaqp7adg8sAgBSiJrURXdFaqILhBZNcaukQI,3376
|
|
388
388
|
wandelbots_api_client/v2/models/bus_io_profinet_network.py,sha256=wXeyfs8cbSSNeWe_2nMN4Uotv2kpy1AhxQngpOmHEEc,4097
|
|
389
|
+
wandelbots_api_client/v2/models/bus_io_profinet_slot.py,sha256=cJ7odDjI_qAqQg_UdirbTWju-ttHLs5CPVKg5UrmAk4,3224
|
|
389
390
|
wandelbots_api_client/v2/models/bus_io_profinet_virtual.py,sha256=3QTxm21rlYlVDUwLg_ilaKWafYZ_A73OQP9_o6_jF7c,2926
|
|
390
391
|
wandelbots_api_client/v2/models/bus_io_type.py,sha256=kkhb1Ass2pVPGlgvlW9zj8UZfZpYXVJ31eK2pvGnm3Q,9136
|
|
391
392
|
wandelbots_api_client/v2/models/bus_ios_state.py,sha256=y08_fanLOKpZdJAFdysQ2kkRTJOUB9ht4qT5u130zVM,2947
|
|
@@ -585,8 +586,8 @@ wandelbots_api_client/v2/models/playback_speed_response.py,sha256=pxHcLjbHWNKRf7
|
|
|
585
586
|
wandelbots_api_client/v2/models/pose.py,sha256=AMdlcf6nWTvaWDAlUonP7w2F5at-qDayMnXRNttPWZc,3319
|
|
586
587
|
wandelbots_api_client/v2/models/profinet_description.py,sha256=-ktOK0CwjaSUZbOduGvXHjpNHzxOPXRmZyQy8zAWOes,5041
|
|
587
588
|
wandelbots_api_client/v2/models/profinet_input_output_config.py,sha256=LG9lLLkVmAW_c-BSsmzarErQq0Bj8AxTV4tQVSqgvbk,3599
|
|
588
|
-
wandelbots_api_client/v2/models/profinet_io.py,sha256=
|
|
589
|
-
wandelbots_api_client/v2/models/profinet_io_data.py,sha256=
|
|
589
|
+
wandelbots_api_client/v2/models/profinet_io.py,sha256=S7jO_IMFm-X99tfNa9F1UG4z9wJtvXpuBhGeTD6xvyY,4483
|
|
590
|
+
wandelbots_api_client/v2/models/profinet_io_data.py,sha256=i1Rmc3AbzyW1m9qZQ0em4cRFIlfGGkqW2UBX1_--4vY,4240
|
|
590
591
|
wandelbots_api_client/v2/models/profinet_io_direction.py,sha256=t0inKliUb2wRhorMvPeW0JjFEFKX-N_9Ly1xrXO3rqk,1005
|
|
591
592
|
wandelbots_api_client/v2/models/profinet_io_type_enum.py,sha256=sStDFfmu1B-5-CzY_KKpxgnBpjGDp-uBVzhnj42k7T0,1301
|
|
592
593
|
wandelbots_api_client/v2/models/profinet_slot_description.py,sha256=EPXe8MJg7zNPM8kTIvYKOSUagTSyXg0iOY0Xc6qw3zk,5017
|
|
@@ -653,18 +654,18 @@ wandelbots_api_client/v2/models/zod_validation_error.py,sha256=1WPSECVx5_SqDDkx0
|
|
|
653
654
|
wandelbots_api_client/v2/models/zod_validation_error_error.py,sha256=Uc0lXPdD-fIFhTEqnHxyRPhJi8SVtDK8lenbVhEDGJE,4416
|
|
654
655
|
wandelbots_api_client/v2/models/zod_validation_error_error_details_inner.py,sha256=QTs1CXzMg6kKfhKyY0TYfSFNvXvrDqdPGSPXee1hKiI,4037
|
|
655
656
|
wandelbots_api_client/v2/models/zod_validation_error_error_details_inner_path_inner.py,sha256=L9SPWClflYFOT9JQe5yTwOHKBOA8ShIgxiiZ4a2f4RI,5493
|
|
656
|
-
wandelbots_api_client/v2_pydantic/__init__.py,sha256
|
|
657
|
-
wandelbots_api_client/v2_pydantic/api_client.py,sha256=
|
|
657
|
+
wandelbots_api_client/v2_pydantic/__init__.py,sha256=-Bt60GfYvJxZvM_0xYxn9pPJUuGG8lupMU1QDS44UiQ,1061
|
|
658
|
+
wandelbots_api_client/v2_pydantic/api_client.py,sha256=YdHAQVKqPV8YIU7pwq8jJowJvkrK_lMOnp5xsosQAGc,28142
|
|
658
659
|
wandelbots_api_client/v2_pydantic/api_response.py,sha256=eMxw1mpmJcoGZ3gs9z6jM4oYoZ10Gjk333s9sKxGv7s,652
|
|
659
|
-
wandelbots_api_client/v2_pydantic/configuration.py,sha256=
|
|
660
|
+
wandelbots_api_client/v2_pydantic/configuration.py,sha256=BhY0R3K7H0JP7uffgkOSKK9HdIeUPvAvsOY8-Rvz8f8,18189
|
|
660
661
|
wandelbots_api_client/v2_pydantic/exceptions.py,sha256=Drsd9QsxdUX9okRXcWiYlF5itY9_7_OgNrKhPkBYMws,6432
|
|
661
|
-
wandelbots_api_client/v2_pydantic/models.py,sha256=
|
|
662
|
+
wandelbots_api_client/v2_pydantic/models.py,sha256=pCkSnMBmjH8y0RLoq_54icqxSC034hwHKHGmrC7nvmc,152873
|
|
662
663
|
wandelbots_api_client/v2_pydantic/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
663
664
|
wandelbots_api_client/v2_pydantic/rest.py,sha256=tPzuwEQCHmMxyGjMAjWhbm2P6od6k6j4bZJdziI_Ec0,7272
|
|
664
665
|
wandelbots_api_client/v2_pydantic/virtual_controller_types.py,sha256=luk6nO5VP4f8NmaHVrgzWmcw4TaFyNXD3B9WoECdID8,5225
|
|
665
666
|
wandelbots_api_client/v2_pydantic/api/__init__.py,sha256=Dkor2myY6ojJ5mtosKN8EyNlrg3dUlYBzS7NGpNK4Qo,1934
|
|
666
667
|
wandelbots_api_client/v2_pydantic/api/application_api.py,sha256=Td1FOAoRK3dsvx41iYBDvP7YFqA5SaZYiFLPFzI28k8,71249
|
|
667
|
-
wandelbots_api_client/v2_pydantic/api/bus_inputs_outputs_api.py,sha256=
|
|
668
|
+
wandelbots_api_client/v2_pydantic/api/bus_inputs_outputs_api.py,sha256=NysDzAfmRNHX5aiMhyzGso44FK-AV15HBS7oCcoLYQw,226977
|
|
668
669
|
wandelbots_api_client/v2_pydantic/api/cell_api.py,sha256=MvSbwt24WNazl4kXsKN-lGnNefBoA_hd0mru3NfV5KY,101068
|
|
669
670
|
wandelbots_api_client/v2_pydantic/api/controller_api.py,sha256=F1iyfUjtbLme-2wd7ieMbeFDn71IfF8-l2VEJSQye_k,164718
|
|
670
671
|
wandelbots_api_client/v2_pydantic/api/controller_inputs_outputs_api.py,sha256=KEa705tgBnwTi4O9o5gLPs4ZxCbLbQ82Az4c38WzgnU,62308
|
|
@@ -687,8 +688,8 @@ wandelbots_api_client/v2_pydantic/api/version_api.py,sha256=gQ8znJVJYxXjJFMBK4ef
|
|
|
687
688
|
wandelbots_api_client/v2_pydantic/api/virtual_controller_api.py,sha256=fHvUVeWJx6DauzYz_kUCPVLij8WA1U_mmQIEG5JifLs,238460
|
|
688
689
|
wandelbots_api_client/v2_pydantic/api/virtual_controller_behavior_api.py,sha256=uY8FyumT1bc6k2F-hZi6EYWbvgCqYARkqVuM3oXJ_Ao,42312
|
|
689
690
|
wandelbots_api_client/v2_pydantic/api/virtual_controller_inputs_outputs_api.py,sha256=GHrdVGPMmyVcgpCmtGC_yWlk21gl4ZUh34r6UbSBZj0,42548
|
|
690
|
-
wandelbots_api_client-26.3.0.
|
|
691
|
-
wandelbots_api_client-26.3.0.
|
|
692
|
-
wandelbots_api_client-26.3.0.
|
|
693
|
-
wandelbots_api_client-26.3.0.
|
|
694
|
-
wandelbots_api_client-26.3.0.
|
|
691
|
+
wandelbots_api_client-26.3.0.dev24.dist-info/licenses/LICENSE,sha256=PJyUaZgTVC0_nJmhRpcbnOcXvmTqJGE6axeSifngIGY,11344
|
|
692
|
+
wandelbots_api_client-26.3.0.dev24.dist-info/METADATA,sha256=GtOZ0su6gUfBY7qsCWMwuxCUOhXoRBTeMrLECnu-rYM,8022
|
|
693
|
+
wandelbots_api_client-26.3.0.dev24.dist-info/WHEEL,sha256=aeYiig01lYGDzBgS8HxWXOg3uV61G9ijOsup-k9o1sk,91
|
|
694
|
+
wandelbots_api_client-26.3.0.dev24.dist-info/top_level.txt,sha256=eCDsV95XWqVBSMDe4MRzyOj53-TK-o5WU1Qv_yv493M,22
|
|
695
|
+
wandelbots_api_client-26.3.0.dev24.dist-info/RECORD,,
|
{wandelbots_api_client-26.3.0.dev23.dist-info → wandelbots_api_client-26.3.0.dev24.dist-info}/WHEEL
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|