modal 0.73.39__tar.gz → 0.73.41__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.
Files changed (187) hide show
  1. {modal-0.73.39 → modal-0.73.41}/PKG-INFO +1 -1
  2. {modal-0.73.39 → modal-0.73.41}/modal/_functions.py +3 -7
  3. {modal-0.73.39 → modal-0.73.41}/modal/cli/programs/run_jupyter.py +1 -1
  4. {modal-0.73.39 → modal-0.73.41}/modal/cli/programs/vscode.py +1 -1
  5. {modal-0.73.39 → modal-0.73.41}/modal/client.pyi +2 -2
  6. {modal-0.73.39 → modal-0.73.41}/modal/functions.pyi +1 -1
  7. {modal-0.73.39 → modal-0.73.41}/modal.egg-info/PKG-INFO +1 -1
  8. {modal-0.73.39 → modal-0.73.41}/modal_version/_version_generated.py +1 -1
  9. {modal-0.73.39 → modal-0.73.41}/pyproject.toml +0 -1
  10. {modal-0.73.39 → modal-0.73.41}/LICENSE +0 -0
  11. {modal-0.73.39 → modal-0.73.41}/README.md +0 -0
  12. {modal-0.73.39 → modal-0.73.41}/modal/__init__.py +0 -0
  13. {modal-0.73.39 → modal-0.73.41}/modal/__main__.py +0 -0
  14. {modal-0.73.39 → modal-0.73.41}/modal/_clustered_functions.py +0 -0
  15. {modal-0.73.39 → modal-0.73.41}/modal/_clustered_functions.pyi +0 -0
  16. {modal-0.73.39 → modal-0.73.41}/modal/_container_entrypoint.py +0 -0
  17. {modal-0.73.39 → modal-0.73.41}/modal/_ipython.py +0 -0
  18. {modal-0.73.39 → modal-0.73.41}/modal/_location.py +0 -0
  19. {modal-0.73.39 → modal-0.73.41}/modal/_object.py +0 -0
  20. {modal-0.73.39 → modal-0.73.41}/modal/_output.py +0 -0
  21. {modal-0.73.39 → modal-0.73.41}/modal/_partial_function.py +0 -0
  22. {modal-0.73.39 → modal-0.73.41}/modal/_proxy_tunnel.py +0 -0
  23. {modal-0.73.39 → modal-0.73.41}/modal/_pty.py +0 -0
  24. {modal-0.73.39 → modal-0.73.41}/modal/_resolver.py +0 -0
  25. {modal-0.73.39 → modal-0.73.41}/modal/_resources.py +0 -0
  26. {modal-0.73.39 → modal-0.73.41}/modal/_runtime/__init__.py +0 -0
  27. {modal-0.73.39 → modal-0.73.41}/modal/_runtime/asgi.py +0 -0
  28. {modal-0.73.39 → modal-0.73.41}/modal/_runtime/container_io_manager.py +0 -0
  29. {modal-0.73.39 → modal-0.73.41}/modal/_runtime/execution_context.py +0 -0
  30. {modal-0.73.39 → modal-0.73.41}/modal/_runtime/gpu_memory_snapshot.py +0 -0
  31. {modal-0.73.39 → modal-0.73.41}/modal/_runtime/telemetry.py +0 -0
  32. {modal-0.73.39 → modal-0.73.41}/modal/_runtime/user_code_imports.py +0 -0
  33. {modal-0.73.39 → modal-0.73.41}/modal/_serialization.py +0 -0
  34. {modal-0.73.39 → modal-0.73.41}/modal/_traceback.py +0 -0
  35. {modal-0.73.39 → modal-0.73.41}/modal/_tunnel.py +0 -0
  36. {modal-0.73.39 → modal-0.73.41}/modal/_tunnel.pyi +0 -0
  37. {modal-0.73.39 → modal-0.73.41}/modal/_utils/__init__.py +0 -0
  38. {modal-0.73.39 → modal-0.73.41}/modal/_utils/app_utils.py +0 -0
  39. {modal-0.73.39 → modal-0.73.41}/modal/_utils/async_utils.py +0 -0
  40. {modal-0.73.39 → modal-0.73.41}/modal/_utils/blob_utils.py +0 -0
  41. {modal-0.73.39 → modal-0.73.41}/modal/_utils/bytes_io_segment_payload.py +0 -0
  42. {modal-0.73.39 → modal-0.73.41}/modal/_utils/deprecation.py +0 -0
  43. {modal-0.73.39 → modal-0.73.41}/modal/_utils/docker_utils.py +0 -0
  44. {modal-0.73.39 → modal-0.73.41}/modal/_utils/function_utils.py +0 -0
  45. {modal-0.73.39 → modal-0.73.41}/modal/_utils/grpc_testing.py +0 -0
  46. {modal-0.73.39 → modal-0.73.41}/modal/_utils/grpc_utils.py +0 -0
  47. {modal-0.73.39 → modal-0.73.41}/modal/_utils/hash_utils.py +0 -0
  48. {modal-0.73.39 → modal-0.73.41}/modal/_utils/http_utils.py +0 -0
  49. {modal-0.73.39 → modal-0.73.41}/modal/_utils/logger.py +0 -0
  50. {modal-0.73.39 → modal-0.73.41}/modal/_utils/mount_utils.py +0 -0
  51. {modal-0.73.39 → modal-0.73.41}/modal/_utils/name_utils.py +0 -0
  52. {modal-0.73.39 → modal-0.73.41}/modal/_utils/package_utils.py +0 -0
  53. {modal-0.73.39 → modal-0.73.41}/modal/_utils/pattern_utils.py +0 -0
  54. {modal-0.73.39 → modal-0.73.41}/modal/_utils/rand_pb_testing.py +0 -0
  55. {modal-0.73.39 → modal-0.73.41}/modal/_utils/shell_utils.py +0 -0
  56. {modal-0.73.39 → modal-0.73.41}/modal/_vendor/__init__.py +0 -0
  57. {modal-0.73.39 → modal-0.73.41}/modal/_vendor/a2wsgi_wsgi.py +0 -0
  58. {modal-0.73.39 → modal-0.73.41}/modal/_vendor/cloudpickle.py +0 -0
  59. {modal-0.73.39 → modal-0.73.41}/modal/_vendor/tblib.py +0 -0
  60. {modal-0.73.39 → modal-0.73.41}/modal/_watcher.py +0 -0
  61. {modal-0.73.39 → modal-0.73.41}/modal/app.py +0 -0
  62. {modal-0.73.39 → modal-0.73.41}/modal/app.pyi +0 -0
  63. {modal-0.73.39 → modal-0.73.41}/modal/call_graph.py +0 -0
  64. {modal-0.73.39 → modal-0.73.41}/modal/cli/__init__.py +0 -0
  65. {modal-0.73.39 → modal-0.73.41}/modal/cli/_download.py +0 -0
  66. {modal-0.73.39 → modal-0.73.41}/modal/cli/_traceback.py +0 -0
  67. {modal-0.73.39 → modal-0.73.41}/modal/cli/app.py +0 -0
  68. {modal-0.73.39 → modal-0.73.41}/modal/cli/config.py +0 -0
  69. {modal-0.73.39 → modal-0.73.41}/modal/cli/container.py +0 -0
  70. {modal-0.73.39 → modal-0.73.41}/modal/cli/dict.py +0 -0
  71. {modal-0.73.39 → modal-0.73.41}/modal/cli/entry_point.py +0 -0
  72. {modal-0.73.39 → modal-0.73.41}/modal/cli/environment.py +0 -0
  73. {modal-0.73.39 → modal-0.73.41}/modal/cli/import_refs.py +0 -0
  74. {modal-0.73.39 → modal-0.73.41}/modal/cli/launch.py +0 -0
  75. {modal-0.73.39 → modal-0.73.41}/modal/cli/network_file_system.py +0 -0
  76. {modal-0.73.39 → modal-0.73.41}/modal/cli/profile.py +0 -0
  77. {modal-0.73.39 → modal-0.73.41}/modal/cli/programs/__init__.py +0 -0
  78. {modal-0.73.39 → modal-0.73.41}/modal/cli/queues.py +0 -0
  79. {modal-0.73.39 → modal-0.73.41}/modal/cli/run.py +0 -0
  80. {modal-0.73.39 → modal-0.73.41}/modal/cli/secret.py +0 -0
  81. {modal-0.73.39 → modal-0.73.41}/modal/cli/token.py +0 -0
  82. {modal-0.73.39 → modal-0.73.41}/modal/cli/utils.py +0 -0
  83. {modal-0.73.39 → modal-0.73.41}/modal/cli/volume.py +0 -0
  84. {modal-0.73.39 → modal-0.73.41}/modal/client.py +0 -0
  85. {modal-0.73.39 → modal-0.73.41}/modal/cloud_bucket_mount.py +0 -0
  86. {modal-0.73.39 → modal-0.73.41}/modal/cloud_bucket_mount.pyi +0 -0
  87. {modal-0.73.39 → modal-0.73.41}/modal/cls.py +0 -0
  88. {modal-0.73.39 → modal-0.73.41}/modal/cls.pyi +0 -0
  89. {modal-0.73.39 → modal-0.73.41}/modal/config.py +0 -0
  90. {modal-0.73.39 → modal-0.73.41}/modal/container_process.py +0 -0
  91. {modal-0.73.39 → modal-0.73.41}/modal/container_process.pyi +0 -0
  92. {modal-0.73.39 → modal-0.73.41}/modal/dict.py +0 -0
  93. {modal-0.73.39 → modal-0.73.41}/modal/dict.pyi +0 -0
  94. {modal-0.73.39 → modal-0.73.41}/modal/environments.py +0 -0
  95. {modal-0.73.39 → modal-0.73.41}/modal/environments.pyi +0 -0
  96. {modal-0.73.39 → modal-0.73.41}/modal/exception.py +0 -0
  97. {modal-0.73.39 → modal-0.73.41}/modal/experimental.py +0 -0
  98. {modal-0.73.39 → modal-0.73.41}/modal/experimental.pyi +0 -0
  99. {modal-0.73.39 → modal-0.73.41}/modal/extensions/__init__.py +0 -0
  100. {modal-0.73.39 → modal-0.73.41}/modal/extensions/ipython.py +0 -0
  101. {modal-0.73.39 → modal-0.73.41}/modal/file_io.py +0 -0
  102. {modal-0.73.39 → modal-0.73.41}/modal/file_io.pyi +0 -0
  103. {modal-0.73.39 → modal-0.73.41}/modal/file_pattern_matcher.py +0 -0
  104. {modal-0.73.39 → modal-0.73.41}/modal/functions.py +0 -0
  105. {modal-0.73.39 → modal-0.73.41}/modal/gpu.py +0 -0
  106. {modal-0.73.39 → modal-0.73.41}/modal/image.py +0 -0
  107. {modal-0.73.39 → modal-0.73.41}/modal/image.pyi +0 -0
  108. {modal-0.73.39 → modal-0.73.41}/modal/io_streams.py +0 -0
  109. {modal-0.73.39 → modal-0.73.41}/modal/io_streams.pyi +0 -0
  110. {modal-0.73.39 → modal-0.73.41}/modal/mount.py +0 -0
  111. {modal-0.73.39 → modal-0.73.41}/modal/mount.pyi +0 -0
  112. {modal-0.73.39 → modal-0.73.41}/modal/network_file_system.py +0 -0
  113. {modal-0.73.39 → modal-0.73.41}/modal/network_file_system.pyi +0 -0
  114. {modal-0.73.39 → modal-0.73.41}/modal/object.py +0 -0
  115. {modal-0.73.39 → modal-0.73.41}/modal/object.pyi +0 -0
  116. {modal-0.73.39 → modal-0.73.41}/modal/output.py +0 -0
  117. {modal-0.73.39 → modal-0.73.41}/modal/parallel_map.py +0 -0
  118. {modal-0.73.39 → modal-0.73.41}/modal/parallel_map.pyi +0 -0
  119. {modal-0.73.39 → modal-0.73.41}/modal/partial_function.py +0 -0
  120. {modal-0.73.39 → modal-0.73.41}/modal/partial_function.pyi +0 -0
  121. {modal-0.73.39 → modal-0.73.41}/modal/proxy.py +0 -0
  122. {modal-0.73.39 → modal-0.73.41}/modal/proxy.pyi +0 -0
  123. {modal-0.73.39 → modal-0.73.41}/modal/py.typed +0 -0
  124. {modal-0.73.39 → modal-0.73.41}/modal/queue.py +0 -0
  125. {modal-0.73.39 → modal-0.73.41}/modal/queue.pyi +0 -0
  126. {modal-0.73.39 → modal-0.73.41}/modal/requirements/2023.12.312.txt +0 -0
  127. {modal-0.73.39 → modal-0.73.41}/modal/requirements/2023.12.txt +0 -0
  128. {modal-0.73.39 → modal-0.73.41}/modal/requirements/2024.04.txt +0 -0
  129. {modal-0.73.39 → modal-0.73.41}/modal/requirements/2024.10.txt +0 -0
  130. {modal-0.73.39 → modal-0.73.41}/modal/requirements/README.md +0 -0
  131. {modal-0.73.39 → modal-0.73.41}/modal/requirements/base-images.json +0 -0
  132. {modal-0.73.39 → modal-0.73.41}/modal/retries.py +0 -0
  133. {modal-0.73.39 → modal-0.73.41}/modal/runner.py +0 -0
  134. {modal-0.73.39 → modal-0.73.41}/modal/runner.pyi +0 -0
  135. {modal-0.73.39 → modal-0.73.41}/modal/running_app.py +0 -0
  136. {modal-0.73.39 → modal-0.73.41}/modal/sandbox.py +0 -0
  137. {modal-0.73.39 → modal-0.73.41}/modal/sandbox.pyi +0 -0
  138. {modal-0.73.39 → modal-0.73.41}/modal/schedule.py +0 -0
  139. {modal-0.73.39 → modal-0.73.41}/modal/scheduler_placement.py +0 -0
  140. {modal-0.73.39 → modal-0.73.41}/modal/secret.py +0 -0
  141. {modal-0.73.39 → modal-0.73.41}/modal/secret.pyi +0 -0
  142. {modal-0.73.39 → modal-0.73.41}/modal/serving.py +0 -0
  143. {modal-0.73.39 → modal-0.73.41}/modal/serving.pyi +0 -0
  144. {modal-0.73.39 → modal-0.73.41}/modal/snapshot.py +0 -0
  145. {modal-0.73.39 → modal-0.73.41}/modal/snapshot.pyi +0 -0
  146. {modal-0.73.39 → modal-0.73.41}/modal/stream_type.py +0 -0
  147. {modal-0.73.39 → modal-0.73.41}/modal/token_flow.py +0 -0
  148. {modal-0.73.39 → modal-0.73.41}/modal/token_flow.pyi +0 -0
  149. {modal-0.73.39 → modal-0.73.41}/modal/volume.py +0 -0
  150. {modal-0.73.39 → modal-0.73.41}/modal/volume.pyi +0 -0
  151. {modal-0.73.39 → modal-0.73.41}/modal.egg-info/SOURCES.txt +0 -0
  152. {modal-0.73.39 → modal-0.73.41}/modal.egg-info/dependency_links.txt +0 -0
  153. {modal-0.73.39 → modal-0.73.41}/modal.egg-info/entry_points.txt +0 -0
  154. {modal-0.73.39 → modal-0.73.41}/modal.egg-info/requires.txt +0 -0
  155. {modal-0.73.39 → modal-0.73.41}/modal.egg-info/top_level.txt +0 -0
  156. {modal-0.73.39 → modal-0.73.41}/modal_docs/__init__.py +0 -0
  157. {modal-0.73.39 → modal-0.73.41}/modal_docs/gen_cli_docs.py +0 -0
  158. {modal-0.73.39 → modal-0.73.41}/modal_docs/gen_reference_docs.py +0 -0
  159. {modal-0.73.39 → modal-0.73.41}/modal_docs/mdmd/__init__.py +0 -0
  160. {modal-0.73.39 → modal-0.73.41}/modal_docs/mdmd/mdmd.py +0 -0
  161. {modal-0.73.39 → modal-0.73.41}/modal_docs/mdmd/signatures.py +0 -0
  162. {modal-0.73.39 → modal-0.73.41}/modal_global_objects/__init__.py +0 -0
  163. {modal-0.73.39 → modal-0.73.41}/modal_global_objects/images/__init__.py +0 -0
  164. {modal-0.73.39 → modal-0.73.41}/modal_global_objects/images/base_images.py +0 -0
  165. {modal-0.73.39 → modal-0.73.41}/modal_global_objects/mounts/__init__.py +0 -0
  166. {modal-0.73.39 → modal-0.73.41}/modal_global_objects/mounts/modal_client_package.py +0 -0
  167. {modal-0.73.39 → modal-0.73.41}/modal_global_objects/mounts/python_standalone.py +0 -0
  168. {modal-0.73.39 → modal-0.73.41}/modal_proto/__init__.py +0 -0
  169. {modal-0.73.39 → modal-0.73.41}/modal_proto/api.proto +0 -0
  170. {modal-0.73.39 → modal-0.73.41}/modal_proto/api_grpc.py +0 -0
  171. {modal-0.73.39 → modal-0.73.41}/modal_proto/api_pb2.py +0 -0
  172. {modal-0.73.39 → modal-0.73.41}/modal_proto/api_pb2.pyi +0 -0
  173. {modal-0.73.39 → modal-0.73.41}/modal_proto/api_pb2_grpc.py +0 -0
  174. {modal-0.73.39 → modal-0.73.41}/modal_proto/api_pb2_grpc.pyi +0 -0
  175. {modal-0.73.39 → modal-0.73.41}/modal_proto/modal_api_grpc.py +0 -0
  176. {modal-0.73.39 → modal-0.73.41}/modal_proto/modal_options_grpc.py +0 -0
  177. {modal-0.73.39 → modal-0.73.41}/modal_proto/options.proto +0 -0
  178. {modal-0.73.39 → modal-0.73.41}/modal_proto/options_grpc.py +0 -0
  179. {modal-0.73.39 → modal-0.73.41}/modal_proto/options_pb2.py +0 -0
  180. {modal-0.73.39 → modal-0.73.41}/modal_proto/options_pb2.pyi +0 -0
  181. {modal-0.73.39 → modal-0.73.41}/modal_proto/options_pb2_grpc.py +0 -0
  182. {modal-0.73.39 → modal-0.73.41}/modal_proto/options_pb2_grpc.pyi +0 -0
  183. {modal-0.73.39 → modal-0.73.41}/modal_proto/py.typed +0 -0
  184. {modal-0.73.39 → modal-0.73.41}/modal_version/__init__.py +0 -0
  185. {modal-0.73.39 → modal-0.73.41}/modal_version/__main__.py +0 -0
  186. {modal-0.73.39 → modal-0.73.41}/setup.cfg +0 -0
  187. {modal-0.73.39 → modal-0.73.41}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: modal
3
- Version: 0.73.39
3
+ Version: 0.73.41
4
4
  Summary: Python client library for Modal
5
5
  Author: Modal Labs
6
6
  Author-email: support@modal.com
@@ -536,7 +536,6 @@ class _Function(typing.Generic[P, ReturnType, OriginalReturnType], _Object, type
536
536
  f"image_with_source = my_image.add_local_python_source({python_stringified_modules})\n\n"
537
537
  )
538
538
  + "For more information, see https://modal.com/docs/guide/modal-1-0-migration",
539
- pending=True,
540
539
  )
541
540
  all_mounts += auto_mounts.values()
542
541
  else:
@@ -1258,13 +1257,10 @@ class _Function(typing.Generic[P, ReturnType, OriginalReturnType], _Object, type
1258
1257
  # TODO (live_method on properties is not great, since it could be blocking the event loop from async contexts)
1259
1258
  @property
1260
1259
  @live_method
1261
- async def web_url(self) -> str:
1260
+ async def web_url(self) -> Optional[str]:
1262
1261
  """URL of a Function running as a web endpoint."""
1263
- if not self._web_url:
1264
- raise ValueError(
1265
- f"No web_url can be found for function {self._function_name}. web_url "
1266
- "can only be referenced from a running app context"
1267
- )
1262
+ # TODO If we remove the @live_method above, we may want to provide better feedback when the underlying
1263
+ # attribute is None because the object is not hydrated, rather than because it's not a web endpoint.
1268
1264
  return self._web_url
1269
1265
 
1270
1266
  @property
@@ -15,7 +15,7 @@ from modal import App, Image, Queue, Secret, Volume, forward
15
15
  # Passed by `modal launch` locally via CLI, plumbed to remote runner through secrets.
16
16
  args: dict[str, Any] = json.loads(os.environ.get("MODAL_LAUNCH_ARGS", "{}"))
17
17
 
18
- app = App()
18
+ app = App(include_source=True) # TODO: remove include_source=True when automount is disabled by default
19
19
 
20
20
  image = Image.from_registry(args.get("image"), add_python=args.get("add_python")).pip_install("jupyterlab")
21
21
 
@@ -22,7 +22,7 @@ CODE_SERVER_ENTRYPOINT = (
22
22
  FIXUD_INSTALLER = "https://github.com/boxboat/fixuid/releases/download/v0.6.0/fixuid-0.6.0-linux-$ARCH.tar.gz"
23
23
 
24
24
 
25
- app = App()
25
+ app = App(include_source=True) # TODO: remove include_source=True when automount is disabled by default
26
26
  image = (
27
27
  Image.from_registry(args.get("image"), add_python="3.11")
28
28
  .apt_install("curl", "dumb-init", "git", "git-lfs")
@@ -27,7 +27,7 @@ class _Client:
27
27
  _snapshotted: bool
28
28
 
29
29
  def __init__(
30
- self, server_url: str, client_type: int, credentials: typing.Optional[tuple[str, str]], version: str = "0.73.39"
30
+ self, server_url: str, client_type: int, credentials: typing.Optional[tuple[str, str]], version: str = "0.73.41"
31
31
  ): ...
32
32
  def is_closed(self) -> bool: ...
33
33
  @property
@@ -85,7 +85,7 @@ class Client:
85
85
  _snapshotted: bool
86
86
 
87
87
  def __init__(
88
- self, server_url: str, client_type: int, credentials: typing.Optional[tuple[str, str]], version: str = "0.73.39"
88
+ self, server_url: str, client_type: int, credentials: typing.Optional[tuple[str, str]], version: str = "0.73.41"
89
89
  ): ...
90
90
  def is_closed(self) -> bool: ...
91
91
  @property
@@ -160,7 +160,7 @@ class Function(
160
160
  def _get_metadata(self): ...
161
161
  def _check_no_web_url(self, fn_name: str): ...
162
162
  @property
163
- def web_url(self) -> str: ...
163
+ def web_url(self) -> typing.Optional[str]: ...
164
164
  @property
165
165
  def is_generator(self) -> bool: ...
166
166
  @property
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: modal
3
- Version: 0.73.39
3
+ Version: 0.73.41
4
4
  Summary: Python client library for Modal
5
5
  Author: Modal Labs
6
6
  Author-email: support@modal.com
@@ -1,4 +1,4 @@
1
1
  # Copyright Modal Labs 2025
2
2
 
3
3
  # Note: Reset this value to -1 whenever you make a minor `0.X` release of the client.
4
- build_number = 39 # git: 346da8e
4
+ build_number = 41 # git: f90d5dd
@@ -18,7 +18,6 @@ module = [
18
18
  ]
19
19
  ignore_errors = true
20
20
 
21
-
22
21
  [tool.pytest.ini_options]
23
22
  timeout = 300
24
23
  addopts = "--ignore=modal/cli/programs"
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
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