pymammotion 0.5.12__tar.gz → 0.5.14__tar.gz
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.
Potentially problematic release.
This version of pymammotion might be problematic. Click here for more details.
- {pymammotion-0.5.12 → pymammotion-0.5.14}/PKG-INFO +1 -1
- {pymammotion-0.5.12 → pymammotion-0.5.14}/pymammotion/mammotion/devices/mammotion.py +12 -9
- {pymammotion-0.5.12 → pymammotion-0.5.14}/pymammotion/proto/mctrl_driver.proto +2 -2
- {pymammotion-0.5.12 → pymammotion-0.5.14}/pyproject.toml +2 -2
- {pymammotion-0.5.12 → pymammotion-0.5.14}/LICENSE +0 -0
- {pymammotion-0.5.12 → pymammotion-0.5.14}/README.md +0 -0
- {pymammotion-0.5.12 → pymammotion-0.5.14}/pymammotion/__init__.py +0 -0
- {pymammotion-0.5.12 → pymammotion-0.5.14}/pymammotion/aliyun/__init__.py +0 -0
- {pymammotion-0.5.12 → pymammotion-0.5.14}/pymammotion/aliyun/client.py +0 -0
- {pymammotion-0.5.12 → pymammotion-0.5.14}/pymammotion/aliyun/cloud_gateway.py +0 -0
- {pymammotion-0.5.12 → pymammotion-0.5.14}/pymammotion/aliyun/model/aep_response.py +0 -0
- {pymammotion-0.5.12 → pymammotion-0.5.14}/pymammotion/aliyun/model/connect_response.py +0 -0
- {pymammotion-0.5.12 → pymammotion-0.5.14}/pymammotion/aliyun/model/dev_by_account_response.py +0 -0
- {pymammotion-0.5.12 → pymammotion-0.5.14}/pymammotion/aliyun/model/login_by_oauth_response.py +0 -0
- {pymammotion-0.5.12 → pymammotion-0.5.14}/pymammotion/aliyun/model/regions_response.py +0 -0
- {pymammotion-0.5.12 → pymammotion-0.5.14}/pymammotion/aliyun/model/session_by_authcode_response.py +0 -0
- {pymammotion-0.5.12 → pymammotion-0.5.14}/pymammotion/aliyun/regions.py +0 -0
- {pymammotion-0.5.12 → pymammotion-0.5.14}/pymammotion/aliyun/tea/core.py +0 -0
- {pymammotion-0.5.12 → pymammotion-0.5.14}/pymammotion/aliyun/tmp_constant.py +0 -0
- {pymammotion-0.5.12 → pymammotion-0.5.14}/pymammotion/bluetooth/__init__.py +0 -0
- {pymammotion-0.5.12 → pymammotion-0.5.14}/pymammotion/bluetooth/ble.py +0 -0
- {pymammotion-0.5.12 → pymammotion-0.5.14}/pymammotion/bluetooth/ble_message.py +0 -0
- {pymammotion-0.5.12 → pymammotion-0.5.14}/pymammotion/bluetooth/const.py +0 -0
- {pymammotion-0.5.12 → pymammotion-0.5.14}/pymammotion/bluetooth/data/__init__.py +0 -0
- {pymammotion-0.5.12 → pymammotion-0.5.14}/pymammotion/bluetooth/data/convert.py +0 -0
- {pymammotion-0.5.12 → pymammotion-0.5.14}/pymammotion/bluetooth/data/framectrldata.py +0 -0
- {pymammotion-0.5.12 → pymammotion-0.5.14}/pymammotion/bluetooth/data/notifydata.py +0 -0
- {pymammotion-0.5.12 → pymammotion-0.5.14}/pymammotion/bluetooth/model/__init__.py +0 -0
- {pymammotion-0.5.12 → pymammotion-0.5.14}/pymammotion/bluetooth/model/atomic_integer.py +0 -0
- {pymammotion-0.5.12 → pymammotion-0.5.14}/pymammotion/const.py +0 -0
- {pymammotion-0.5.12 → pymammotion-0.5.14}/pymammotion/data/__init__.py +0 -0
- {pymammotion-0.5.12 → pymammotion-0.5.14}/pymammotion/data/model/__init__.py +0 -0
- {pymammotion-0.5.12 → pymammotion-0.5.14}/pymammotion/data/model/account.py +0 -0
- {pymammotion-0.5.12 → pymammotion-0.5.14}/pymammotion/data/model/device.py +0 -0
- {pymammotion-0.5.12 → pymammotion-0.5.14}/pymammotion/data/model/device_config.py +0 -0
- {pymammotion-0.5.12 → pymammotion-0.5.14}/pymammotion/data/model/device_info.py +0 -0
- {pymammotion-0.5.12 → pymammotion-0.5.14}/pymammotion/data/model/device_limits.py +0 -0
- {pymammotion-0.5.12 → pymammotion-0.5.14}/pymammotion/data/model/enums.py +0 -0
- {pymammotion-0.5.12 → pymammotion-0.5.14}/pymammotion/data/model/errors.py +0 -0
- {pymammotion-0.5.12 → pymammotion-0.5.14}/pymammotion/data/model/excute_boarder_params.py +0 -0
- {pymammotion-0.5.12 → pymammotion-0.5.14}/pymammotion/data/model/execute_boarder.py +0 -0
- {pymammotion-0.5.12 → pymammotion-0.5.14}/pymammotion/data/model/generate_route_information.py +0 -0
- {pymammotion-0.5.12 → pymammotion-0.5.14}/pymammotion/data/model/hash_list.py +0 -0
- {pymammotion-0.5.12 → pymammotion-0.5.14}/pymammotion/data/model/location.py +0 -0
- {pymammotion-0.5.12 → pymammotion-0.5.14}/pymammotion/data/model/mowing_modes.py +0 -0
- {pymammotion-0.5.12 → pymammotion-0.5.14}/pymammotion/data/model/rapid_state.py +0 -0
- {pymammotion-0.5.12 → pymammotion-0.5.14}/pymammotion/data/model/raw_data.py +0 -0
- {pymammotion-0.5.12 → pymammotion-0.5.14}/pymammotion/data/model/region_data.py +0 -0
- {pymammotion-0.5.12 → pymammotion-0.5.14}/pymammotion/data/model/report_info.py +0 -0
- {pymammotion-0.5.12 → pymammotion-0.5.14}/pymammotion/data/model/work.py +0 -0
- {pymammotion-0.5.12 → pymammotion-0.5.14}/pymammotion/data/mqtt/__init__.py +0 -0
- {pymammotion-0.5.12 → pymammotion-0.5.14}/pymammotion/data/mqtt/event.py +0 -0
- {pymammotion-0.5.12 → pymammotion-0.5.14}/pymammotion/data/mqtt/properties.py +0 -0
- {pymammotion-0.5.12 → pymammotion-0.5.14}/pymammotion/data/mqtt/status.py +0 -0
- {pymammotion-0.5.12 → pymammotion-0.5.14}/pymammotion/data/state_manager.py +0 -0
- {pymammotion-0.5.12 → pymammotion-0.5.14}/pymammotion/event/__init__.py +0 -0
- {pymammotion-0.5.12 → pymammotion-0.5.14}/pymammotion/event/event.py +0 -0
- {pymammotion-0.5.12 → pymammotion-0.5.14}/pymammotion/http/__init__.py +0 -0
- {pymammotion-0.5.12 → pymammotion-0.5.14}/pymammotion/http/_init_.py +0 -0
- {pymammotion-0.5.12 → pymammotion-0.5.14}/pymammotion/http/encryption.py +0 -0
- {pymammotion-0.5.12 → pymammotion-0.5.14}/pymammotion/http/http.py +0 -0
- {pymammotion-0.5.12 → pymammotion-0.5.14}/pymammotion/http/model/__init__.py +0 -0
- {pymammotion-0.5.12 → pymammotion-0.5.14}/pymammotion/http/model/camera_stream.py +0 -0
- {pymammotion-0.5.12 → pymammotion-0.5.14}/pymammotion/http/model/http.py +0 -0
- {pymammotion-0.5.12 → pymammotion-0.5.14}/pymammotion/http/model/response_factory.py +0 -0
- {pymammotion-0.5.12 → pymammotion-0.5.14}/pymammotion/mammotion/__init__.py +0 -0
- {pymammotion-0.5.12 → pymammotion-0.5.14}/pymammotion/mammotion/commands/__init__.py +0 -0
- {pymammotion-0.5.12 → pymammotion-0.5.14}/pymammotion/mammotion/commands/abstract_message.py +0 -0
- {pymammotion-0.5.12 → pymammotion-0.5.14}/pymammotion/mammotion/commands/mammotion_command.py +0 -0
- {pymammotion-0.5.12 → pymammotion-0.5.14}/pymammotion/mammotion/commands/messages/__init__.py +0 -0
- {pymammotion-0.5.12 → pymammotion-0.5.14}/pymammotion/mammotion/commands/messages/driver.py +0 -0
- {pymammotion-0.5.12 → pymammotion-0.5.14}/pymammotion/mammotion/commands/messages/media.py +0 -0
- {pymammotion-0.5.12 → pymammotion-0.5.14}/pymammotion/mammotion/commands/messages/navigation.py +0 -0
- {pymammotion-0.5.12 → pymammotion-0.5.14}/pymammotion/mammotion/commands/messages/network.py +0 -0
- {pymammotion-0.5.12 → pymammotion-0.5.14}/pymammotion/mammotion/commands/messages/ota.py +0 -0
- {pymammotion-0.5.12 → pymammotion-0.5.14}/pymammotion/mammotion/commands/messages/system.py +0 -0
- {pymammotion-0.5.12 → pymammotion-0.5.14}/pymammotion/mammotion/commands/messages/video.py +0 -0
- {pymammotion-0.5.12 → pymammotion-0.5.14}/pymammotion/mammotion/control/__init__.py +0 -0
- {pymammotion-0.5.12 → pymammotion-0.5.14}/pymammotion/mammotion/control/joystick.py +0 -0
- {pymammotion-0.5.12 → pymammotion-0.5.14}/pymammotion/mammotion/devices/__init__.py +0 -0
- {pymammotion-0.5.12 → pymammotion-0.5.14}/pymammotion/mammotion/devices/base.py +0 -0
- {pymammotion-0.5.12 → pymammotion-0.5.14}/pymammotion/mammotion/devices/mammotion_bluetooth.py +0 -0
- {pymammotion-0.5.12 → pymammotion-0.5.14}/pymammotion/mammotion/devices/mammotion_cloud.py +0 -0
- {pymammotion-0.5.12 → pymammotion-0.5.14}/pymammotion/mqtt/__init__.py +0 -0
- {pymammotion-0.5.12 → pymammotion-0.5.14}/pymammotion/mqtt/linkkit/__init__.py +0 -0
- {pymammotion-0.5.12 → pymammotion-0.5.14}/pymammotion/mqtt/linkkit/h2client.py +0 -0
- {pymammotion-0.5.12 → pymammotion-0.5.14}/pymammotion/mqtt/linkkit/linkkit.py +0 -0
- {pymammotion-0.5.12 → pymammotion-0.5.14}/pymammotion/mqtt/mammotion_future.py +0 -0
- {pymammotion-0.5.12 → pymammotion-0.5.14}/pymammotion/mqtt/mammotion_mqtt.py +0 -0
- {pymammotion-0.5.12 → pymammotion-0.5.14}/pymammotion/proto/__init__.py +0 -0
- {pymammotion-0.5.12 → pymammotion-0.5.14}/pymammotion/proto/basestation.proto +0 -0
- {pymammotion-0.5.12 → pymammotion-0.5.14}/pymammotion/proto/basestation_pb2.py +0 -0
- {pymammotion-0.5.12 → pymammotion-0.5.14}/pymammotion/proto/basestation_pb2.pyi +0 -0
- {pymammotion-0.5.12 → pymammotion-0.5.14}/pymammotion/proto/common.proto +0 -0
- {pymammotion-0.5.12 → pymammotion-0.5.14}/pymammotion/proto/common_pb2.py +0 -0
- {pymammotion-0.5.12 → pymammotion-0.5.14}/pymammotion/proto/common_pb2.pyi +0 -0
- {pymammotion-0.5.12 → pymammotion-0.5.14}/pymammotion/proto/dev_net.proto +0 -0
- {pymammotion-0.5.12 → pymammotion-0.5.14}/pymammotion/proto/dev_net_pb2.py +0 -0
- {pymammotion-0.5.12 → pymammotion-0.5.14}/pymammotion/proto/dev_net_pb2.pyi +0 -0
- {pymammotion-0.5.12 → pymammotion-0.5.14}/pymammotion/proto/luba_msg.proto +0 -0
- {pymammotion-0.5.12 → pymammotion-0.5.14}/pymammotion/proto/luba_msg_pb2.py +0 -0
- {pymammotion-0.5.12 → pymammotion-0.5.14}/pymammotion/proto/luba_msg_pb2.pyi +0 -0
- {pymammotion-0.5.12 → pymammotion-0.5.14}/pymammotion/proto/luba_mul.proto +0 -0
- {pymammotion-0.5.12 → pymammotion-0.5.14}/pymammotion/proto/luba_mul_pb2.py +0 -0
- {pymammotion-0.5.12 → pymammotion-0.5.14}/pymammotion/proto/luba_mul_pb2.pyi +0 -0
- {pymammotion-0.5.12 → pymammotion-0.5.14}/pymammotion/proto/mctrl_driver_pb2.py +0 -0
- {pymammotion-0.5.12 → pymammotion-0.5.14}/pymammotion/proto/mctrl_driver_pb2.pyi +0 -0
- {pymammotion-0.5.12 → pymammotion-0.5.14}/pymammotion/proto/mctrl_nav.proto +0 -0
- {pymammotion-0.5.12 → pymammotion-0.5.14}/pymammotion/proto/mctrl_nav_pb2.py +0 -0
- {pymammotion-0.5.12 → pymammotion-0.5.14}/pymammotion/proto/mctrl_nav_pb2.pyi +0 -0
- {pymammotion-0.5.12 → pymammotion-0.5.14}/pymammotion/proto/mctrl_ota.proto +0 -0
- {pymammotion-0.5.12 → pymammotion-0.5.14}/pymammotion/proto/mctrl_ota_pb2.py +0 -0
- {pymammotion-0.5.12 → pymammotion-0.5.14}/pymammotion/proto/mctrl_ota_pb2.pyi +0 -0
- {pymammotion-0.5.12 → pymammotion-0.5.14}/pymammotion/proto/mctrl_pept.proto +0 -0
- {pymammotion-0.5.12 → pymammotion-0.5.14}/pymammotion/proto/mctrl_pept_pb2.py +0 -0
- {pymammotion-0.5.12 → pymammotion-0.5.14}/pymammotion/proto/mctrl_pept_pb2.pyi +0 -0
- {pymammotion-0.5.12 → pymammotion-0.5.14}/pymammotion/proto/mctrl_sys.proto +0 -0
- {pymammotion-0.5.12 → pymammotion-0.5.14}/pymammotion/proto/mctrl_sys_pb2.py +0 -0
- {pymammotion-0.5.12 → pymammotion-0.5.14}/pymammotion/proto/mctrl_sys_pb2.pyi +0 -0
- {pymammotion-0.5.12 → pymammotion-0.5.14}/pymammotion/py.typed +0 -0
- {pymammotion-0.5.12 → pymammotion-0.5.14}/pymammotion/utility/constant/__init__.py +0 -0
- {pymammotion-0.5.12 → pymammotion-0.5.14}/pymammotion/utility/constant/device_constant.py +0 -0
- {pymammotion-0.5.12 → pymammotion-0.5.14}/pymammotion/utility/conversions.py +0 -0
- {pymammotion-0.5.12 → pymammotion-0.5.14}/pymammotion/utility/datatype_converter.py +0 -0
- {pymammotion-0.5.12 → pymammotion-0.5.14}/pymammotion/utility/device_config.py +0 -0
- {pymammotion-0.5.12 → pymammotion-0.5.14}/pymammotion/utility/device_type.py +0 -0
- {pymammotion-0.5.12 → pymammotion-0.5.14}/pymammotion/utility/map.py +0 -0
- {pymammotion-0.5.12 → pymammotion-0.5.14}/pymammotion/utility/movement.py +0 -0
- {pymammotion-0.5.12 → pymammotion-0.5.14}/pymammotion/utility/mur_mur_hash.py +0 -0
- {pymammotion-0.5.12 → pymammotion-0.5.14}/pymammotion/utility/periodic.py +0 -0
- {pymammotion-0.5.12 → pymammotion-0.5.14}/pymammotion/utility/rocker_util.py +0 -0
|
@@ -139,11 +139,13 @@ class MammotionDeviceManager:
|
|
|
139
139
|
if mammotion_device.has_ble():
|
|
140
140
|
exists.replace_ble(mammotion_device.ble())
|
|
141
141
|
|
|
142
|
+
def has_device(self, mammotion_device_name: str) -> bool:
|
|
143
|
+
if self.devices.get(mammotion_device_name, None) is not None:
|
|
144
|
+
return True
|
|
145
|
+
return False
|
|
146
|
+
|
|
142
147
|
def get_device(self, mammotion_device_name: str) -> MammotionMixedDeviceManager:
|
|
143
|
-
|
|
144
|
-
return device
|
|
145
|
-
else:
|
|
146
|
-
raise KeyError
|
|
148
|
+
return self.devices[mammotion_device_name]
|
|
147
149
|
|
|
148
150
|
async def remove_device(self, name: str) -> None:
|
|
149
151
|
"""Remove a device."""
|
|
@@ -231,8 +233,8 @@ class Mammotion:
|
|
|
231
233
|
def add_cloud_devices(self, mqtt_client: MammotionCloud) -> None:
|
|
232
234
|
"""Add devices from cloud."""
|
|
233
235
|
for device in mqtt_client.cloud_client.devices_by_account_response.data.data:
|
|
234
|
-
|
|
235
|
-
if device.deviceName.startswith(("Luba-", "Yuka-")) and
|
|
236
|
+
has_device = self.device_manager.has_device(device.deviceName)
|
|
237
|
+
if device.deviceName.startswith(("Luba-", "Yuka-")) and not has_device:
|
|
236
238
|
mixed_device = MammotionMixedDeviceManager(
|
|
237
239
|
name=device.deviceName,
|
|
238
240
|
iot_id=device.iotId,
|
|
@@ -246,7 +248,8 @@ class Mammotion:
|
|
|
246
248
|
device.productName if device.productModel is None else device.productModel
|
|
247
249
|
)
|
|
248
250
|
self.device_manager.add_device(mixed_device)
|
|
249
|
-
elif device.deviceName.startswith(("Luba-", "Yuka-")) and
|
|
251
|
+
elif device.deviceName.startswith(("Luba-", "Yuka-")) and has_device:
|
|
252
|
+
mower_device = self.device_manager.get_device(device.deviceName)
|
|
250
253
|
if mower_device.cloud() is None:
|
|
251
254
|
mower_device.add_cloud(mqtt=mqtt_client)
|
|
252
255
|
else:
|
|
@@ -284,8 +287,8 @@ class Mammotion:
|
|
|
284
287
|
return self.device_manager.get_device(name)
|
|
285
288
|
|
|
286
289
|
def get_or_create_device_by_name(self, device: Device, mqtt_client: MammotionCloud) -> MammotionMixedDeviceManager:
|
|
287
|
-
if
|
|
288
|
-
return
|
|
290
|
+
if self.device_manager.has_device(device.deviceName):
|
|
291
|
+
return self.device_manager.get_device(device.deviceName)
|
|
289
292
|
mow_device = MammotionMixedDeviceManager(
|
|
290
293
|
name=device.deviceName,
|
|
291
294
|
iot_id=device.iotId,
|
|
@@ -4,7 +4,7 @@ build-backend = "poetry.core.masonry.api"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "pymammotion"
|
|
7
|
-
version = "0.5.
|
|
7
|
+
version = "0.5.14"
|
|
8
8
|
license = "GPL-3.0"
|
|
9
9
|
description = ""
|
|
10
10
|
readme = "README.md"
|
|
@@ -66,7 +66,7 @@ autotyping = "^24.3.0"
|
|
|
66
66
|
ipython = "^9.0.2"
|
|
67
67
|
|
|
68
68
|
[tool.bumpver]
|
|
69
|
-
current_version = "0.5.
|
|
69
|
+
current_version = "0.5.14"
|
|
70
70
|
version_pattern = "MAJOR.MINOR.PATCH"
|
|
71
71
|
commit_message = "Bump version {old_version} -> {new_version}"
|
|
72
72
|
commit = true
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pymammotion-0.5.12 → pymammotion-0.5.14}/pymammotion/aliyun/model/dev_by_account_response.py
RENAMED
|
File without changes
|
{pymammotion-0.5.12 → pymammotion-0.5.14}/pymammotion/aliyun/model/login_by_oauth_response.py
RENAMED
|
File without changes
|
|
File without changes
|
{pymammotion-0.5.12 → pymammotion-0.5.14}/pymammotion/aliyun/model/session_by_authcode_response.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pymammotion-0.5.12 → pymammotion-0.5.14}/pymammotion/data/model/generate_route_information.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pymammotion-0.5.12 → pymammotion-0.5.14}/pymammotion/mammotion/commands/abstract_message.py
RENAMED
|
File without changes
|
{pymammotion-0.5.12 → pymammotion-0.5.14}/pymammotion/mammotion/commands/mammotion_command.py
RENAMED
|
File without changes
|
{pymammotion-0.5.12 → pymammotion-0.5.14}/pymammotion/mammotion/commands/messages/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pymammotion-0.5.12 → pymammotion-0.5.14}/pymammotion/mammotion/commands/messages/navigation.py
RENAMED
|
File without changes
|
{pymammotion-0.5.12 → pymammotion-0.5.14}/pymammotion/mammotion/commands/messages/network.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pymammotion-0.5.12 → pymammotion-0.5.14}/pymammotion/mammotion/devices/mammotion_bluetooth.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|